PHPに追加されるバックスラッシュ
質問
私の crappy Webホストは、先日いくつかのアップグレードを行い、いくつかの設定がおかしくなりました。当社のwiki(MediaWiki)を見ると、すべての引用がバックスラッシュでエスケープされているためです。影響を受けるのは、投稿されているデータ(つまり、記事)だけでなく、標準のMediaWikiテキストでもあります。例:
あなたは、まだ存在していないページへのリンクをたどっています。ページを作成するには、下のボックスに入力を開始します(詳細については、ヘルプページを参照してください)。誤ってここにいる場合は、ブラウザの\ '\' \ 'back \' \ '\'ボタンをクリックするだけです。
最初にしたことは、 .htaccess
ファイルを使用して magic_quotes_gpc
および magic_quotes_runtime
を無効にすることでしたが、これはまだ発生しています。私の php_info()
はこれを報告します:
Setting Local Value Master Value
magic_quotes_gpc Off On
magic_quotes_runtime Off On
magic_quotes_sybase Off Off
アイデアはありますか
解決
PHPフラグが php_admin_flag
/ php_admin_value
で設定されている場合、 .htaccess
ファイルから変更することはできません。これは以前、頭痛の種でした。 php.ini
で無効にするか、実行時にマジッククオートを元に戻します。
http://talks.php.net/show/php-best-practices/ 26
他のヒント
DBのデータが破損していないことを確認したい場合があります。知らないうちにmagic_quotesがオンになっているときにデータをaddslash()していた場合、DBに入力されるデータは二重にスラッシュされます。
マスター値を変更するか、自分で処理する必要があります。スーパーグローバルの実行時に magic_quotes_gpc()
を設定できるとは思わない。 (実行時に設定すると、データベース/ファイルなどは削除されますが、グローバルは削除されません)
if (ini_get('magic_quotes_gpc') ) {
foreach(マスター値を変更するか、自分で処理する必要があります。スーパーグローバルの実行時に magic_quotes_gpc()
を設定できるとは思わない。 (実行時に設定すると、データベース/ファイルなどは削除されますが、グローバルは削除されません)
<*>GET as $key=>$value) {
マスター値を変更するか、自分で処理する必要があります。スーパーグローバルの実行時に magic_quotes_gpc()
を設定できるとは思わない。 (実行時に設定すると、データベース/ファイルなどは削除されますが、グローバルは削除されません)
<*>GET[$key] = stripslashes($value);
}
} // etc...
おそらく何か他のものがset_magic_quotes_runtime()を呼び出しています。
表示時にstripslases()を使用してスラッシュを削除します。
crappy ホストに連絡して障害を記録しようとしましたか?共有ホスティングを使用している場合は、おそらくあなただけが影響を受けるわけではありません。