1

dreamhost Web パネルがあり、php スクリプトを実行するように cronjob を設定していますが、奇妙なエラーが表示されます。ファイルを実行していないように見えますが、ファイルを読み取っています。エラーは以下のとおりです。それは私に電子メールで送信されます

?php: そのようなファイルまたはディレクトリはありません [somesessionvariable]=1573: コマンドが見つかりません 3 行目: 予期しないトークンの近くで構文エラーが発生しました "include/mydb.php"' line 3:require_once("include/mydb.php");

メールの件名は次のとおりです。

Cron /usr/local/bin/setlock -n /tmp/cronlock.3782446772.128284 sh -c $'/path /to/file/cases_cron.php'

ファイルのパーミッションは 755 で、完全に実行されている他の cronjobs からパスをコピーしたので、ファイルの内容を取得しているため、ファイル パスに問題はありません。問題がどこにあるのかわかりません

4

4 に答える 4

1

インクルード ファイルへの絶対パスを使用する必要があります。

ファイル呼び出しとcron呼び出しでインクルードパスが同じに設定されていないことが問題だと確信しています。

次のようなことができます:

require_once dirname(__FILE__)."/include/mydb.php";

__FILE__この行が実行されるファイルのdirname()パスです。ファイルが配置されている絶対パスを返します。

もちろん、あなたが望むように使用することができますrequire、、、require_onceincludeinclude_one

于 2012-05-09T08:44:39.570 に答える
0

「cd」コマンドを cronjob に入れることもできます。

cd /path/to/phpfile && php -f file.php
于 2012-05-09T08:52:13.347 に答える
0

わかりました、みんな、あなたのすべてのサポートに感謝します、私は最終的に問題を整理することができます.

ファイルの先頭に次の行がありませんでした

#!/usr/local/bin/php

この行をphpファイルの先頭に追加すると、問題が解決されました。しかし、この行がスクリプトにとって何を意味するのかわかりません。しかし、私はそれを他の動作中のcronからコピーしました。

于 2012-05-10T04:37:12.443 に答える
0

あなたの道はおそらくオフです。相対パス (/var/www/project/include/file.php の代わりに include/file.php) を避けるか、chdir()で作業ディレクトリを変更してください。

于 2012-05-09T08:44:51.560 に答える