1

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>";

1つのサーバーでの出力は

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

4

1 に答える 1

1

PHP 5.2.13 には、ハイフンを含むドメインに関するバグ1がありました。同じバグが PHP 5.3.2 にもありました。これは、両方が同時に壊れている/修正されているためです。この特定のバグに関しては、5.2.12/5.3.1 以下と同様に、PHP 5.2.14 および 5.3.3 以降は問題なく動作します。

1 つのサーバーが動作し、もう 1 つのサーバーが動作しない理由については、オペレーティング システムが異なれば、さまざまなパッチが適用された (または適用されない) さまざまな PHP インストールが提供されるため、ソースから PHP をインストールする場合とは異なる場合がよくあります。コードが機能したサーバーには、PHP 5.2.13 のバージョンにパッチが適用されていますが、他のサーバーには適用されていません。

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

于 2012-04-24T20:54:47.347 に答える