• いつもお世話になっ
    ております。ログファイルへの出力が出来ず困っています...
  • guest 
    いつもお世話になっております。ログファイルへの出力が出来ず困っています。

    ログを出力したいファイルの冒頭に下記のini_setを記載し、php.logファイルも作成していますが、ログが出力されません。

    他に記載すべき項目があるのでしょうか。
    あるいは設定が必要なのでしょうか。

    各ファイルごとでのログ出力ですので、php.iniの設定変更は不要と認識しています。
    また、画面へのエラーは表示されています。

    <?php
    ini_set('log_errors','on');
    ini_set('error_log','php.log');
    ?>

    お手数ですが、ご確認のほどよろしくお願いいたします。
    回答 0

     
    それではまず、本当にログエラーが出ないか確認しましょう。
    実際の現場で不具合対応を行うときも、まずは「確実にその場所で不具合が起きているのか?」というチェックを一番最初に行います。
    確認するためにphpファイルの先頭に下記のように記述して下さい。

    <?php
    ini_set('log_errors','on');
    ini_set('error_log','php.log');
    $error_log_data = "エラーログ出力のテストです";
    error_log($error_log_data);
    var_dump($error_log_data);

    まずは上記コードで、var_dump関数によって画面上に「エラーログ出力のテストです」と表示される(ちゃんと処理は呼ばれている)にも関わらず、error_log関数によるログ出力は行われないかどうか確認しましょう。

    guest 
    ご回答いただき、ありがとうございます。

    $error_log_data = "エラーログ出力のテストです";
    error_log($error_log_data);
    var_dump($error_log_data);

    上記を追記することでテストに加えて、他のログも吐き出されるようになりました。
    その後、上記コードを消しても他のログが確認できるようになりました。

    ただ、今回の問題の原因がいまいち掴めておりません。
    追記することで正しく認識されるようになったということでしょうか。

     
    今回の追記をしてもしなくても、エラーログが吐き出されるかどうかに影響はありません。
    なので、追記したことが理由で表示されたわけではありませんね。

    今回の問題の原因を把握したいとのことですが、まずそもそも本当にこの「エラーが吐き出されない」という問題が起きていたかどうかが怪しいので、まずそこを確認する必要があります。

    つまり、もともとちゃんと出力されるように設定できていたが、正しくそのファイルが呼ばれていなかったなどの可能性が否定できない状態なので、
    追記を消したらまた元どおりエラーが吐き出されなくなるのかを見てみると手がかりがつかめるかもしれませんね。
    追記を消して、以前の「エラーが吐き出されない」というのが再現しなければ、以前はファイルに正しくアクセスできていなかった可能性が非常に高いです。

    guest 
    ご返信ありがとうございます。

    問題発生時の原因特定の流れが非常に勉強になりました。

    追記を消しても出力されていましたので、おそらくファイルへのアクセスができていなかったと思います。

    今後とも、よろしくお願いいたします。