filter_var行为不同在不同的服务器

问题描述:

我觉得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

有一个错误在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