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(ヘッダ等)
- 設定ファイル等で定義された変数
- 他システムからのデータ
参考: