1

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 設定がどのようにオーバーライドされたかをより深く理解したいと考えています。

それで、それがどのようにオンにされたのかについて誰かが何か考えを持っていますか?

4

4 に答える 4

1

私はついにそれを理解しました。apache2 と php5 を更新します。

apt-get update
apt-get install apache2 php5

これは、apache2 および/または php5 の特定のバージョンのバグです。Debian の apt ユニバースのバージョンが更新されているので、更新するだけで問題は解決します。

于 2012-03-16T08:19:59.560 に答える
1

今日も同じ問題があり、この質問を見つけましたが、明らかな解決策はありません!

magic_quotes_gpc = Offフォルダー内の最後のファイルの行も適用することで最終的に問題を解決した/etc/php5/apache2/conf.dため、何かが元の php.ini ファイルを上書きしているように見えますが、最後に含まれたファイルで設定をもう一度適用すると、実際には magic_quotes が再びオフになりました。

于 2012-03-08T12:50:42.917 に答える