• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:globがcronで動作しません)

globがcronで動作しない

このQ&Aのポイント
  • 新着メールをチェックするPHPスクリプトを作成しています。ブラウザからアクセスすると正常に動作しますが、cronで実行すると問題が発生します。特に、glob関数が正常に動作しないことがわかりました。
  • スクリプトやパスに問題はなく、対象ディレクトリの権限なども正常です。cronでの動作に関する参考情報や対処法が知りたいです。
  • PHPのスクリプトで、メールボックスのnewディレクトリをglob関数で取得し、メールの数を数えて未読があるかどうか判断する必要があります。しかし、cronで実行するとglob関数が正常に動作しません。どうすれば解決できるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

cronのユーザと記述したコマンドの内容は? rootなら環境変数がユーザとは違います。 cronで su - ユーザ名 -c "実行するコマンド" とか書かないと。

ka-kichi
質問者

補足

ご回答ありがとうございます。 やはりユーザー関連の情報が必要なんですね。 cronのユーザーを調べているのですがわかりません。すみません。 記述したコマンドとは、以下のことでいいのでしょうか。 0 8 * * * /bin/sh /~~/hoge.sh >/dev/null 2>&1 さっきの質問に書き忘れていたのですが、cronでシェルスクリプト(hoge.sh)を呼び出し、 シェルスクリプトからPHPを呼び出しています。 この場合、ユーザー名の指定はcrontabで行うのでしょうか?シェルスクリプト内で行うのでしょうか?

その他の回答 (1)

回答No.2

globに記述したディレクトリのパスなんですが、相対パスで書いてたりしませんか? PHPをコマンドラインから実行する場合、ホームディレクトリになる場所が、違ったりします。 絶対パスで記述したらなおりませんか。

ka-kichi
質問者

お礼

ご回答ありがとうございます。 パスは絶対パスで記述しておりますので大丈夫だと思います。

ka-kichi
質問者

補足

直接な解決ではありませんが、globを止め、opendirに変更したところ、うまくいきました。 ありがとうございました。

関連するQ&A