それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

phpで syntax エラーが表示されない場合の対応法を、php.iniの設定変更を軸にまとめた

PHPでエラーが表示されずに困ることがある。最近のPHPは標準がエラー非表示になってる場合があり、ちょっと戸惑うことがある。

php エラーはdisplay_erros とerror_reportingで決まる

php.ini

display_errors  = On    ;エラーをブラウザに出す・出さない
error_reporting = E_ALL ;無視するエラーを決める.

で表示出来る。
これらはプログラム中で一時的にOnにできる。

php.ini の設定が反映されないなら次の順で確認

  1. Apache動作時( apache 向け php.ini)
  2. コマンドライン版( cli 向け php.ini )
  3. Windowsのインストーラー版 ( UACphp.ini)

で確認箇所が違う。特にUACでハマりました

ApachePHPでエラー非表示を表示にするには

php.iniに次の一文を追記する

display_errors  = On

うまくいかないとき、まず設定を確認する

<?php
phpinfo(); #画面でdisplay_errosの設定を確認する
           #また現在読み込まれているphp.iniのファイル場所を確認する

php.iniが使えない場合.htaccessを使う

.htaccess を使う

php_flag display_errors on

.htaccessを使わず一時的にONにするには

ini_set関数を使う。プログラム中で有効にする

<?php
ini_set('display_errors', 'On' );

コマンドライン版PHP(php-cli)の場合

まず設定をかくにんする

$php -i | grep display  

次に、iniファイルの場所を確認する

$php -i | grep ini

Windowsのインストーラー版の場合

インストーラーでPHPを入れた場合、php.iniの場所が複数になるので注意


UAC制御下にある場合、php.iniファイルが複数になる

C:\Program file\php\php.ini
C:\Users\ユーザー名\AppData\Local\VirtualStore\Program Files\php\php.ini

の2種類が作られる。インストーラーはProgram Filesの下に作ったつもりでも、実際にはVirtualStoreに作られていたりする。Windows版のphpphp.iniが反映されない場合はバーチャルストアを疑ってみてもイイ。*1

*1:実際私はコレにはまった