- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:globがcronで動作しません)
globがcronで動作しない
このQ&Aのポイント
- 新着メールをチェックするPHPスクリプトを作成しています。ブラウザからアクセスすると正常に動作しますが、cronで実行すると問題が発生します。特に、glob関数が正常に動作しないことがわかりました。
- スクリプトやパスに問題はなく、対象ディレクトリの権限なども正常です。cronでの動作に関する参考情報や対処法が知りたいです。
- PHPのスクリプトで、メールボックスのnewディレクトリをglob関数で取得し、メールの数を数えて未読があるかどうか判断する必要があります。しかし、cronで実行するとglob関数が正常に動作しません。どうすれば解決できるでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
cronのユーザと記述したコマンドの内容は? rootなら環境変数がユーザとは違います。 cronで su - ユーザ名 -c "実行するコマンド" とか書かないと。
その他の回答 (1)
- hogehoge78
- ベストアンサー率80% (433/539)
回答No.2
globに記述したディレクトリのパスなんですが、相対パスで書いてたりしませんか? PHPをコマンドラインから実行する場合、ホームディレクトリになる場所が、違ったりします。 絶対パスで記述したらなおりませんか。
質問者
お礼
ご回答ありがとうございます。 パスは絶対パスで記述しておりますので大丈夫だと思います。
質問者
補足
直接な解決ではありませんが、globを止め、opendirに変更したところ、うまくいきました。 ありがとうございました。
補足
ご回答ありがとうございます。 やはりユーザー関連の情報が必要なんですね。 cronのユーザーを調べているのですがわかりません。すみません。 記述したコマンドとは、以下のことでいいのでしょうか。 0 8 * * * /bin/sh /~~/hoge.sh >/dev/null 2>&1 さっきの質問に書き忘れていたのですが、cronでシェルスクリプト(hoge.sh)を呼び出し、 シェルスクリプトからPHPを呼び出しています。 この場合、ユーザー名の指定はcrontabで行うのでしょうか?シェルスクリプト内で行うのでしょうか?