2012-04-23 27 views
1

我覺得filter_var工作不同我的不同的服務器上,這裏是我運行代碼:filter_var行爲不同在不同的服務器

$url = "http://www.my-domain.com"; 
$urlOriginal = "http://www.my-domain.com"; 
$url = filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED | FILTER_FLAG_HOST_REQUIRED); 
echo $url; 
echo "<br/>Php version: " . phpversion(); 


echo "<br/><h1>"; 
if ($url == $urlOriginal){ 
    echo "it worked because $url == $urlOriginal"; 
} else { 
    echo "it didn't work, because $url != $urlOriginal"; 
} 
echo "</h1>"; 

一臺服務器上的輸出

http://www.my-domain.com 
Php version: 5.2.13 
it worked because http://www.my-domain.com == http://www.my-domain.com 

在其他它是

Php version: 5.2.13 
it didn't work, because != http://www.my-domain.com 

因爲他們都使用相同版本的PHP我認爲這可能涉及d以某種方式配置事物,任何想法是什麼?

我還發現這可能是相關的: https://bugs.php.net/bug.php?id=51305&edit=1

+0

通知$網址是例2中缺少什麼的var_dump($網址)返回? – 2012-04-23 22:04:57

+1

@Dagon,因爲'filter_var'在* malformed *輸入的情況下返回'false',當它被轉換成字符串時它是空字符串。 @ user893730你確定像'FILTER_VALIDATE_URL'這樣的常量沒有被重新定義嗎?兩臺服務器是否有相同的操作系統? – kirilloid 2012-04-23 22:06:46

+0

這就是爲什麼我要求的var_dump的結果:_) – 2012-04-23 22:09:26

回答

1

有一個錯誤在PHP 5.2.13用於容納連字符域。同樣的錯誤出現在PHP 5.3.2中,因爲它們同時被破壞/修復。就5.2.12/5.3.1及以下版本而言,PHP 5.2.14和5.3.3以上版本可以很好地工作,就這個特定的錯誤而言。

至於爲什麼一級服務器的作品和其他沒有,不同的操作系統提供應用了(或沒有),使他們往往是不同的,從源代碼安裝PHP各種補丁不同的PHP安裝。代碼工作的服務器在他們的PHP 5.2.13版本中應用了補丁,而其他服務器則沒有。

https://bugs.php.net/51192

相關問題