気軽に読めるPHP入門書・PHPスクリプトが動かないときの原因と対策などを紹介します。

  1. PHPエラーの原因と対策
  2. 15 view

「error_reporting 32767」とは

「error_reporting 32767」とか「error_reporting 32759」のようなコードは何かの暗号のようですが、実は「error_reporting(E_ALL)」や「error_reporting(E_ALL & ~E_NOTICE)」と同じことです。定数E_ALLを数値にすると32767だということです。

主なエラー定数と数値は次のとおりです。

  • 32767:E_ALL
  • 2048:E_STRICT
  • 8:E_NOTICE
  • 4:E_PARSE
  • 1:E_ERROR

この数値はPHPのバージョンによって異なる場合があるので注意が必要です。詳しくは、以下のページをご覧ください。

PHPマニュアル:エラー処理/定義済み定数

E_ALLの代わりに32767が使われる理由

E_ALLの代わりに32767が使われる理由の1つは.htaccessです。

ホームページ(Webアプリケーション)の動作設定を記述できる.htaccessでは、E_ALLのような定数は使えません。つまり、次のような記述は反映されません。

php_value error_reporting E_ALL

そのため、E_ALLなどの定数の代わりに次のように数値で指定する必要があります。

php_value error_reporting 32767

同じように、NOTICE以外の全エラーを表示したい場合は、E_ALL & ~E_NOTICEではなく「error_reporting 32759」のように指定します。32759はE_ALLの32767からE_NOTICEの8を引いた数値です。

php_value error_reporting 32759

現在の環境での定数値を調べる方法

これらの定数値はバージョンによって異なります。

E_ALLは、PHP 5.4.x では 32767、 PHP 5.3.x では 30719、 PHP 5.2.x では 6143、 それより前のバージョンでは 2047 でした。

PHPマニュアル:エラー処理/定義済み定数より引用)

.htaccessに設定を記述する前に現在の環境での定数値をチェックするには、次のように定数を出力してみるとよいでしょう。

<?php
echo E_ALL & ~E_NOTICE;
?>
実行結果
32759

PHPエラーの原因と対策の最近記事

  1. PHPの関数や変数の前にあるアットマークの意味は?

  2. 「http:// wrapper is disabled in the server co…

  3. php.iniの場所

  4. 「Warning: array_key_exists()」と表示されるとき

  5. 「Warning: A non-numeric value encountered」と表示…

関連記事

PAGE TOP