php.iniでの設定_PHP
php.iniでの設定
WindowsではWindowsディレクトリに「php.ini」を置きます。Linuxの場合は「/usr/local/lib/」に置きます。
XOOPSにてPHPを使う場合は文字コードをEUCで扱う必要があるため、これの設定をphp.iniで行う必要があります。その他、いろいろな設定をphp.iniで制御することができるようになっています。
なお、php.iniの設定を変更した場合、一度Webサーバ(Apacheなど)を再起動する必要があります。
文字コードをEUCにする
[PHP] ; 以下をEUC-JPに置き換え default_charset="EUC-JP"; [mbstring] mbstring.language = Japanese ; 以下をEUC-JPに置き換え mbstring.internal_encoding = EUC-JP mbstring.http_input = auto ; 以下をpassに置き換え mbstring.http_output = pass mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none;
コメント化されている部分は解除して、以下のように指定することでPHPはEUCで文字列を扱うようになります。
グローバル変数を使用できないようにする
セキュリティ上、グローバル変数を許すとよくありませんので、「register_globals」がOffになっていることを確認します。最近のPHPのバージョンだと、デフォルトでOffになっていると思います。
[PHP] register_globals = Off
エラーを出力
もし、PHPソースにエラーがある場合、そのエラーメッセージをブラウザに出力するようにします。
[PHP] error_reporting = E_ALL & ~E_NOTICE display_errors = On
「error_reporting = E_ALL & ~E_NOTICE」にて、いわゆる警告は表示しないようにしています(ちょっとした情報も出力されてしまうため、特にXOOPSでは警告を出しているとうっとおしいことになります)。「display_errors = On」で」エラー出力を有効にします。
ファイルアップロード機能を有効にする
[PHP] file_uploads = On upload_max_filesize = 2M
フォームでファイルをアップロードできるようにします。「upload_max_filesize」にてアップロードできるファイルの最大サイズを指定します。「2M」だと、最大2MBとなります。
Magic quotes
PHPのフォームより文字列データを取得するとき、デフォルトであると「' → \'」「" → \"」「\ → \\」と、勝手に変換処理が行われています。これは、セキュリティ上の親切からだと思われますが、環境によっては変換されたりされなかったり、ということが起こったりします。これは「Magic quotes」というので管理されており、php.iniでその設定がされています。
[PHP] magic_quotes_gpc = On
デフォルトでは「magic_quotes_gpc = On」です。これがOnの場合、クォーテーション、ダブルクォーテーション、¥マーク(バックスラッシュ)は1つ前に「\」がついた状態で変換されます。プログラム上では、この余分な「\」をカットする必要がでてきます。
「magic_quotes_gpc = Off」の場合は、この変換は行われません。
php.iniの設定でフォームから取得した文字列が変わっては問題になりますので、フォームから文字列を取得したとき、以下のような関数を通して正しい文字列に置き換えてあげたほうがいいかもしれません。
function conv_form_to_php($orgStr) { if($orgStr == '') return ''; $str = trim($orgStr); if(get_magic_quotes_gpc()) { $str = str_replace("\\'", "'", $str); $str = str_replace("\\\"", "\"", $str); $str = str_replace("\\\\", "\\", $str); } return $str; }
「get_magic_quotes_gpc」にてphp.iniの「magic_quotes_gpc」がOnかOffかを判定します。もしもOnの場合は元に戻す処理を行っています。
mbstringの有効化
文字コードを相互変換したい場合など、「mbstring」機能を有効にします。
extension_dir = "C:\Program Files\php-4.3.10-Win32\extensions\" extension=php_mbstring.dll
「extension_dir」にてPHPインストールディレクトリ内の「extensions」へのフルパスを指定し、「extension=php_mbstring.dll」の行がセミコロンでコメント化されていますので、セミコロンを取って有効にします。
使い方はmbstringのページを参照してください。
セッションの有効化
セッションを有効にする場合、以下を確認します。
[Session] session.save_handler = files session.save_path = "C:/temp"
「session.save_handler = files」にて、セッションが確保されたときの情報はファイルに保存されます。デフォルトでfilesになっています。「session.save_path」にてセッション情報を出力するディレクトリのファイルパスを指定します。「sess_44d0a8e70b965e5d6c97fe579403a39b」みたいなファイルがテンポラリとして出力されることになります。
Future's Laboratory 技術格納庫 2004-2013 Yutaka Yoshisaka.