PHP 5.3.2 を実行している Ubuntu 10.04 サーバーがあり、php.ini ファイルに次の行を設定しています。
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
他の php.ini ファイルはありません (ハード ドライブ全体を検索しました)。すべての apache2 構成ファイル (ハード ドライブ全体のすべての .htaccess ファイルを含む) をチェックしましたが、他の場所では参照されていません。
でも:
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
var_dump(get_magic_quotes_gpc());
?>
次の出力を生成します。int(1)
つまり、魔法の引用符がオンになっています。これは、引用符付きの任意のタイプのリクエストを追加することで簡単に確認でき、引用符で囲まれます。 root .htaccess ファイルに以下を追加して、これを修正しました。
php_flag magic_quotes_gpc Off
前述のコードは、目的の結果を生成するようになりました: int(0)
、出力は引用されません。
では、質問:なぜ、神よ、なぜ、そもそも魔法の引用符がオンになっているのですか?! はい、この質問は他の方からの質問と似ています。私は「迅速な修正」を探しているわけではありません。はい、魔法の引用符が php 5.4 で削除されることは知っています。しかし、実際には、5.4 が出てから数年間は下位互換性を維持する必要があります (別のクライアントなど)。ルート .htaccess ファイルに行を追加することでこれを修正できることはわかっていますが (先ほど示したように)、そもそも php.ini 設定がどのようにオーバーライドされたかをより深く理解したいと考えています。
それで、それがどのようにオンにされたのかについて誰かが何か考えを持っていますか?