filter_var在不同的服务器上表现不同

时间:2012-04-23 21:25:23

标签: php filtering

我认为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,我认为这可能与某些事情的配置有关,任何想法是什么?

我也发现这可能是相关的: https://bugs.php.net/bug.php?id=51305&edit=1

1 个答案:

答案 0 :(得分:1)

对于包含连字符的域,PHP 5.2.13中存在 1 错误。 PHP 5.3.2也存在同样的错误,因为它们同时被破坏/修复。关于这个特殊的bug,PHP 5.2.14和5.3.3以及5.2.12 / 5.3.1及以下版本的工作正常。

至于为什么一台服务器工作而另一台服务器不工作,不同的操作系统提供不同的PHP安装,应用(或不应用)各种补丁,使它们与从源安装PHP通常不同。代码工作的服务器在其PHP 5.2.13版本中应用了补丁,而另一台服务器则没有。

1 https://bugs.php.net/51192