CronジョブのCasperJSとPHPはファイルを開くことができず、手動で実行すると正常に動作します。

CronジョブのCasperJSとPHPはファイルを開くことができず、手動で実行すると正常に動作します。

最近、Ubuntuに新しいDigitalOcean LEMP環境がありました。 CasperJSを使用して外部WebサイトのデータをJSONファイルにスクラップするSHスクリプトと、JSONを解析してMySQLデータベースを更新するPHPスクリプトを作成しようとしています。 SH は cron ジョブによって実行されます。私のcrontabは次のようになり、90分ごとに実行されるようになっています。

# m h  dom mon dow   command
0 0,3,6,9,12,15,18,21 * * * /bin/sh /usr/share/nginx/private/mpd_calls_for_service/scrape_mpd_calls_cron.sh
30 1,4,7,10,13,16,19,22 * * * /bin/sh /usr/share/nginx/private/mpd_calls_for_service/scrape_mpd_calls_cron.sh

そして問題のSHファイルは次のとおりです。

#!/bin/sh
/usr/local/bin/casperjs /usr/share/nginx/private/mpd_calls_for_service/scrape_mpd_calls.js
/usr/bin/php /usr/share/nginx/private/mpd_calls_for_service/parse_json_file.php

SSHの端末を介してこれらのコード行を個別に実行しても問題はありません。ただし、SSHまたはCronを介してシェルスクリプトを手動で実行すると、これが発生します。

ファイルを開けませんでした: /usr/share/nginx/private/mpd_calls_for_service/scrape_mpd_calls.js 安全でない JavaScript URL about:blank, URL file:///usr/local/lib/node_modules/casperjs/bin /アクセスしようとしています。ブートストラップ.js。ドメイン、プロトコル、ポートが一致する必要があります。

安全でないJavaScriptは、URL file:///usr/local/lib/node_modules/casperjs/bin/bootstrap.js フレームから about:blank URL フレームにアクセスしようとします。ドメイン、プロトコル、ポートが一致する必要があります。

入力ファイルを開くことができません:/usr/share/nginx/private/mpd_calls_for_service/parse_json_file.php

過去2日間に試した解決策は次のとおりです。

  1. 影響を受けるすべてのファイルに対してCHMOD 777を実行します。
  2. sudoing時にcrontab -eを編集します。
  3. npm -g から PhantomJS と CasperJS を再インストールします。

多くの試みの終わりに行き止まりの路地に達し、今は髪を引く準備ができました。コミュニティのどんな助けにも感謝します。

ベストアンサー1

私は&&を含む単一のcrontab行とbash -l -cステートメント内でコマンドを実行していました。

おすすめ記事