PHP のエラーログを標準出力や標準エラーに出す方法

PHP のエラーログを標準出力や標準エラーに出す方法についてです。

PHP をコマンドラインで実行する場合に、エラーをそのままターミナル上で確認したいことがあります。 そんなときには ini_set() で設定 error_log の値を変更すれば OK です。

init();
main();

function init() {
  // 出力先を標準エラーに変更
  ini_set('error_log', 'php://stderr');
}

function main() {
  $node = node_load(150);
  if (empty($node)) {
    // ini_set() でエラーログの出力先を変えておくとこれは標準エラーに出る
    error_log('The node for node id ' . $node_id . ' not found.');
  }

  // ... 本来やりたい処理 ...
}

ちなみに ini_set() で指定する error_log の値は文字列(通常はファイルパス)である必要があります。 ストリームの STDOUTSTDERR を使うことはできません。

ini_set('error_log', 'php://stderr');
// => ini_set() expects parameter 2 to be string, resource given