設定関連

主に php.ini

エラー処理

error_reporting External Site = integer
エラーレベルの設定。
エラー定数External Site は各ビットに対応しているので複数のエラーを拾う場合は | で区切る。
すべてのエラーと警告を表示する。
error_reporting = E_ALL

error_reporting = -1
すべてのエラーと警告を表示しない。
error_reporting = 0
エラーを表示する(ほとんどの警告は表示しない)
すべてのエラー・警告を示す E_ALL から E_NOTICE だけを NOT AND でマスクしている。
E_NOTICE レベルのエラーは値の代入されていない未定義の変数を扱うような場合に出る。
error_reporting  =  E_ALL & ~E_NOTICE
display_errorsExternal Site = string (ver 5.2.4より前はboolean)
エラー表示制御。
On で標準出力にエラー結果を出す。
5.2.4以降は stderr にすると標準エラー出力にエラー結果を出す。
エラーを表示しない(デフォルト)
display_errors = Off
エラーを表示する
display_errors = On

タイムゾーンの設定

エラー出力に設定してあり、タイムゾーンが不明だと実行時にWarningが出る。

Warning: main(): It is not safe to rely on the system's timezone settings.
You are *required* to use the date.timezone setting or the date_default_timezone_set() function.
In case you used any of those methods and you are still getting this warning,
you most likely misspelled the timezone identifier.
We selected 'Asia/Tokyo' for '9.0/no DST' instead in (phpファイルパス) on line (行数)

推奨されてるように素直に Asia/Tokyo をセット。

date.timezone = Asia/Tokyo

インクルードパスの指定

require()、include()、fopen()、file()、readfile() file_get_contents()
これらに類する関数が呼び出された際にファイルの探索候補となるパスを指定する。
セミコロンで区切りカレントディレクトリが指定できる。
PEARなどを利用する際にこれが不明だとインストール済みでも読み込んでくれない。

include_path=".;C:\php\pear"

現在設定されているインクルードパスは以下で確認できる。

<?php echo get_include_path(); ?>

メモリ制限の設定

memory_limit
phpが確保できるメモリの上限を指定します。
超えた場合は Fatal Error を発して停止します。
PHP 5.2.1 からデフォルトで 128M。それ以前は 8M。
memory_limit=128M
ただしスクリプト側で制限突破できるそうなのであまり強制力はないかもしれない。

文字コード設定

  • PHPの文字化け - 5つの誤解と5つの対策External Site
  • PHPの文字化けを本気で解決するExternal Site
  • default_charset
    default_charset="EUC-JP"
    HTTPヘッダ出力時に明示的に送られる文字コード。
    default_charset="EUC-JP" default_mimetype="text/html" だと
    header('Content-Type: text/html; charset:utf-8');が自動で送られる。
    実際の文字コードが指定されるわけではない。
    自動的に設定されてしまうので指定しないほうがよい?
  • internal_encoding
    internal_encoding="UTF-8"
    mbstring関数で使われるデフォルトエンコード。
    エンコード未指定で実行するとここで指定したエンコードだと想定する。
  • http_output
  • mbstring.encoding_translation
    インプットデータの自動変換

拡張モジュール

  • Windows 用 PHP 拡張モジュールExternal Site
  • php.ini-distをphp.iniにリネームする。
    php.ini内の必要な部分を修正。
    extension_dir = "C:/php/ext/"
    デフォルトでは "./"
    インストールフォルダの ext 以下にモジュールがあるのでそれに合わせてパスを修正。
    ;extension=モジュール名.dll の形式でコメントアウトされているので先頭の;を除くと実行時にそのモジュールを読み込む。
    [モジュール名]
    でそれぞれのモジュールの詳細設定もあるのでそこもいじる。
extension_dir
extensionが置かれているフォルダ(ディレクトリ)を指定する。
extension
いくつかは行頭の;でコメントアウトされているので必要なものは外す。
マルチバイト処理関数などを使う場合は
extension=php_mbstring.dll
ファイル名意味
php_bz2.dll
php_curl.dllWWW接続
php_dba.dll
php_dbase.dll
php_exif.dll
php_fdf.dll
php_gd2.dll
php_gettext.dll
php_gmp.dll
php_ifx.dll
php_imap.dll
php_interbase.dll
php_ldap.dll
php_mbstring.dllマルチバイト文字列処理、日本語処理
php_mcrypt.dll
php_mhash.dll
php_mime_magic.dll
php_ming.dll
php_msql.dll
php_mssql.dll
php_mysql.dll
php_mysqli.dll
php_oci8.dll
php_openssl.dll
php_pdo.dll
php_pdo_firebird.dll
php_pdo_mssql.dll
php_pdo_mysql.dll
php_pdo_oci.dll
php_pdo_oci8.dll
php_pdo_odbc.dll
php_pdo_pgsql.dll
php_pdo_sqlite.dll
php_pgsql.dll
php_pspell.dll
php_shmop.dll
php_snmp.dll
php_soap.dll
php_sockets.dll
php_sqlite.dll
php_sybase_ct.dll
php_tidy.dll
php_xmlrpc.dll
php_xsl.dll
php_zip.dllZIPアーカイブ処理

マルチバイト文字

mbstring.language
php4.3.0以降。内部で使われる言語設定(NLS)。
mbstring.internal_encoding の前に置く必要がある。
neutral	中立(デフォルト)
Japanese	日本語
mb_language() で設定・取得可能。
ini_set() で設定・取得可能。
mbstring.detect_order
php4.0.6以降。自動検出する際に参照される文字エンコーディング。
カンマ「,」で区切って指定すると左から順に評価される。
NULL	(デフォルト)
auto	
mb_detect_order() で設定・取得可能。
ini_set() で設定・取得可能。
mbstring.http_input
php4.0.6以降。HTTP入力とする文字コード。「,」で区切って複数指定可能。
pass	変換しない(デフォルト)
auto	mbstring.languageに応じた文字コードが設定される
ini_set() で設定・取得可能。
mbstring.http_output
php4.0.6以降。HTTP出力とする文字コード。
pass	変換しない(デフォルト)
mb_http_output() で設定・取得可能。
ini_set() で設定・取得可能。
mbstring.http_output_conv_mimetypes
php5.3.0。HTTP出力時に文字コード変換を行うMIMEタイプを正規表現で指定する。
ini_set() で設定・取得可能。
mbstring.internal_encoding
php4.0.6以降。内部文字エンコーディング。ソースの文字コードをこれとして扱う。
NULL	(デフォルト)
UTF-8	無難
mb_internal_encoding() で設定・取得可能。
ini_set() で設定・取得可能。
mbstring.script_encoding
php4.3.0以降。
mbstring.substitute_character
php4.0.6以降。変換が無効になったときの代替文字を指定する。
NULL	変換しない(デフォルト)
mb_substitute_character() で設定・取得可能。
ini_set() で設定・取得可能。
mbstring.func_overload
シングルバイト文字列処理関数をマルチバイト用に置き換え(オーバーロード)する設定。
必要な関数に相応するビット和を取る。すべて置き換えるなら 7 にする。
0	オーバーロードしない(デフォルト)
1	mail() 関数
2	str*() 関数
4	ereg*() 関数
7	すべての関数をオーバーロード
関数での設定変更はできない。
mbstring.encoding_translation
php4.3.0以降。有効にするとHTTP入力されたデータを
mbstring.http_input の文字コードとして内部文字エンコーディング mbstring.internal_encoding に変換する。
0	無効(デフォルト)
1	有効
On	有効
関数での設定変更はできない。
mbstring.strict_detection
php5.1.2。厳密なエンコーディング検出を行う。
0	無効(デフォルト)
1	有効
ini_set() で設定・取得可能。

不具合関連

Windowsの任意のphp.iniを読み込んでくれない

レジストリ

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer \UserData
\S-1-5-18\Components\7226D23B061375D47942B053CD215891\00000000000000000000000000000000

のデフォルト値にphp.iniのファイルパスが入っているとそれを最優先に読み込む模様。
削除することで無効化。
ただ、複数フォルダにインストールしていると実行しているphp.exeとは別のフォルダかのphp.iniを優先して読むこともあるようでよくわからない。
先に読み込んでしまうフォルダの php.ini を削除すればいいわけだがこれじゃ本末転倒な気もする。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規新規下位 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-09-29 (木) 02:58:58 (2096d)