LoginSignup
1
1

More than 1 year has passed since last update.

(解決済み)codeigniterでコマンドライン(cli)やcronだけログ出力されなくてハマった件

Last updated at Posted at 2020-06-14

codeigniter3 で のに、log_message()でログ出力されなくてハマった。

apache経由のアクセスは log_message('error','test')でログ出力OK

しかし、shellなどコマンドラインcliやcronだと、log_message('error','test')でログ出力NG

設定ファイル config.php の ログ関連設定をチェック

$config['log_threshold'] = 1; // 'error'だけ表示される
$config['log_path'] = ''; // application/logsに出力される
$config['log_file_permissions'] = 0644;

ログ出力ディレクトリ application/logs の パーミッションチェック

777 ok

エラー設定もチェック

ini_set('display_errors', 1);
error_reporting(E_ALL & ~E_WARNING & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT & ~E_USER_NOTICE & ~E_USER_DEPRECATED);

おわかりだろうか?(原因判明)

ちゃんと出力されているサイトと比較してみたら、

shellなどコマンドラインcliやcronのログ出力

NGサイト
$config['log_file_permissions'] = 0644;
OKサイト
$config['log_file_permissions'] = 0666;

ログ出力時のパーミッションがトラブル原因だった。

apache 経由でその日に初回アクセスしたら、apacheでしか追記できないログになってた。

shell実行したユーザやcronユーザでその日に初回実行したら、apacheで追記できないではないか

昔は気にしてたけど、フレームワーク使うようになって忘れてた。てへ。

結論 設定ファイルでログ出力時のパーミッションを全員書き込み可能にしよう$config['log_file_permissions'] = 0666;

こんなので何日もハマるんだよな。このサイト開発3年目だったのにずっと気づかなかった。。。
誰かに届けっ

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1