PHPメモ

提供: Astarisk Works Wiki

雑多なPHPのメモのページ


httpd.confや.htaccessによるPHPの設定

ApacheのモジュールとしてPHPを動かしている場合、 PHPの設定はphp.ini以外でも可能。設定できるのはhttpd.confまたは.htaccessで設定する。

設定するためには2種類のディレクティブがあり、使い分けは次の通り

ディレクティブ 説明
php_value 文字列で設定するPHPの設定項目を設定するのに使う
php_flag 論理値(OnまたはOff)で設定する設定項目を設定するのに使う


#不用意なエラーレポート出力をさせないようにする→論理値で設定するのでphp_flagで設定
php_flag  display_errors Off
   
#「mbstring」関係の設定 →文字列で設定するのでphp_valueで設定
php_value mbstring.language "Japanese"
php_value mbstring.internal_encoding "EUC-JP"
php_flag  mbstring.encoding_translation Off

ubuntuでパッケージでインストールした場合、デフォルトでAllowOverride noneが設定されていて.htaccessによる設定変更がきかないので注意。別途 Directory ディレクティブでAllowOverrideを設定し直す必要がある。


magic_quotes_gpcについて

PHPの設定にあるmagic_quotes_gpcの、「gpc」はGET/POST/COOKIEを表していて、この3種類からの入力は自動的にエスケープする機能を有効にするかどうかを制御できる。

結論から言うとmagic_quotes_gpcはoffにした方がよい。 理由は次の通り

  • エスケープされる項目とされない項目があり、ややこしくてミスしやすい
  • アプリケーションはエスケープされた後の値を受け取るので形式チェック等がやりづらい
  • エスケープが中途半端

ちなみにエスケープの対象となるのは次の項目

常にエスケープ
  • $REQUEST
    • $_GET
    • $_POS
    • $_COOKIE
場合によってエスケープ済み
  • $_SESSION(セッション)
GPC由来の変数の場合
  • $_FILE(アップロードファイル)
ファイル名のみ
  • DBから得たデータ
magic_quotes_runtime=Onの場合
  • データファイル
GPC由来の変数の場合
  • AP内で生成・加工されるデータ
ケースバイケース

逆にエスケープされていない項目に次の項目がある。

  • $_ENV(環境変数)
  • $_SERVER(ヘッダ等)
  • 設定ファイル等で定義された変数
  • 他システムからのデータ

参考:

desc今更ながらmagic_quotes_gpcの欠点 - T.Teradaの日記
個人用ツール