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
答
有一个错误在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版本中应用了补丁,而其他服务器则没有。
通知$网址是例2中缺少什么的var_dump($网址)返回? – 2012-04-23 22:04:57
@Dagon,因为'filter_var'在* malformed *输入的情况下返回'false',当它被转换成字符串时它是空字符串。 @ user893730你确定像'FILTER_VALIDATE_URL'这样的常量没有被重新定义吗?两台服务器是否有相同的操作系统? – kirilloid 2012-04-23 22:06:46
这就是为什么我要求的var_dump的结果:_) – 2012-04-23 22:09:26