1

次のような外部 XML ファイルからサーバーのステータスをロードする単純な PHP スクリプトがあります。

$xml = simplexml_load_file("http://domain.com/?module=server&action=status-xml");
foreach ($xml->Group->Server->attributes() as $nodename => $value){
    if ($nodename == $param){
        return $value;
    }
}

スクリプトを実行すると、内部サーバー エラー 500 が発生します。エラー ログを見ると、次のようになります。http://i.stack.imgur.com/alOYI.png

基本的に、URL の&は (実行時に何らかの形で) & amp ;に URL コード化されます。

なぜこれが起こっているのですか?これは apache2 /w php-fpm セットアップでした。これはある種のセキュリティ設定ですか?

4

3 に答える 3

2

そこに表示されるのは、それぞれの HTML エンティティに変換された PHP エラー メッセージのHTML出力です。クエリ文字列でサーバーに送信されるわけではありません。&&&

于 2013-05-28T15:27:02.990 に答える
0

私の知る限り、これは単なるエラー報告機能であり、リクエストが行われたときに URL が実際に変更されるわけではありません。html_errorsオプションがホストによって、または独自のインストール中に有効になっているかどうかを確認できます。(詳細: www.php.net )

html_errorsを有効にすると、すべてのエラー コンテンツが HTML エンティティに変換され、オンラインの PHP ドキュメントへのリンクが追加されます。その後、サーバーで error.log を確認すると、エンティティが HTML ではなくテキストとして表示されます。

于 2013-05-28T15:30:02.277 に答える