事業の成長を支えるマーケティングの顧問サービス / ウェブサイト内製・自主運営

PHPでHTML上にエラー表示/非表示する php.ini 設定

PHP でのエラー表示は php.ini にある

display_errors = On

で HTML 上にエラーが表示される。

display_errors = Off

で HTML 上に表示されなくなる。

さらにエラーレポートレベルによってエラーの種類を設定する必要がある。

PHP 4 と PHP 5 のデフォルトは

error_reporting = E_ALL & ~E_NOTICE

他は、全てのエラー出力をオフにする

error_reporting = 0

全てのエラーを出力する

error_reporting = E_ALL

など定義済み定数で細かく設定できる。

php.ini にあるサンプルには

error_reporting
Default Value: E_ALL & ~E_NOTICE
Development Value: E_ALL | E_STRICT
Production Value: E_ALL & ~E_DEPRECATED

とある。

開発環境には以下の設定を。

error_reporting = E_ALL | E_STRICT

E_ALL には PHP5 から追加された E_STRICT が含まれていないため、E_STRICT で互換性がない推奨されていないコードの警告とスクリプトのチェックをしたい。

Webサービスとして運営する時には、

error_reporting = E_ALL & ~E_DEPRECATED

PHP 5.3.0 で新しく加わった E_DEPRECATED で特定の機能が将来のPHPバージョンで推奨されない場合に警告が表示されるので、回避策として。

さらに

display_errors = Off

でエラー表示をなくしたい。

関連サイト

Fatal error: Allowed memory size of … に対処してPHPの使用メモリを増やす

WordPress などを使っていると PHP スクリプトがサーバーに割り当てられたメモリをオーバーして使用している際に遭遇する。

Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 19456 bytes) in ....

そこで、メモリーを増やすことに。設定は /etc/php.ini に。

memory_limit = 16M

から

memory_limit = 32M

に変更して保存。

Apacheを再起動して確認。

あらら、またまた同じエラーが。

Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 19456 bytes) in ....

phpinfo() で確認すると、memory_limit の項目が Master Value では 32M。Local Value では 16M と php.ini で設定された値とは別に .htaccess や httpd.conf など他のどこかで設定されているようだ。

サーバーに ServersMan@VPS を使っている場合、いろいろ探してみるとサブドメインの設定 (/etc/httpd/conf.d/subdomains/site1.xxx.conf) に該当箇所があった。削除するか、

php_admin_value memory_limit 16M

から

php_admin_value memory_limit 32M

に変更保存。

再びサーバ再起動。

/etc/init.d/httpd restart

phpinfo() でも Master Value と Local Value が同じ 32M を確認。

きちっとメモリーが割り当てられた。

関連サイト

PHPを 5.1.x から 5.3.x にアップデートすると、phpMyAdmin にアクセスできなくなった

phpMyAdmin のエラー表示には、

エラーが出たためセッションを開始できませんでした。PHP やウェブサーバのログファイルに出ているエラーを確認して、PHP を正しく設定してください。

と。以降、phpMyAdmin のログイン画面が表示されてもログインできず。

セッションファイルの保存場所 /var/lib/php/session のパーミッションが 770 (drwxrwx—) になっているので、セッションファイルが書き込めない状態になっているようだ。

sudo chmod 777 /usr/lib/php/session

で、パーミッションを 777 (drwxrwxrwx) に変更するとログインできた。

PHP をアップデートするときは、確認しておきたい。

関連する記事をピックアップ