パブリック HTML フォルダーの外部にある PHP ファイルを実行するように CRON を設定するにはどうすればよいでしょうか?

パブリック HTML フォルダーの外部にある PHP ファイルを実行するように CRON を設定するにはどうすればよいでしょうか?

たとえば、次の場所に PHP ファイルがあるとします。

/data/web/process.php

このファイルは公開されていません (そのフォルダーでは仮想ホストは実行されていませんが、Apache はインストールされています)。このファイルを毎日 1 分ごとに実行する必要があります。

crontab を で開くことができることはわかっていますcrontab -eが、必要な操作を実行するためにファイルに正確に何を書き込む必要があるのか​​わかりません。

何か助けていただけますか?

答え1

実行しcrontab -eて次の行を追加します:

* * * * * /usr/bin/php -f /data/web/process.php 2>&1 >> /path/to/output/file.log

/usr/bin/php -f /data/web/process.phpそれを実行する前に、それが期待どおりに動作することを確認してください。また、cron は、を呼び出したのと同じユーザーとして実行されるcrontab -eため、ユーザー rimmer として実行した場合は rimmer として実行され、root として実行した場合は root として実行されることに注意してください。

Apache ユーザーとして実行したい場合は、次のようにします。

sudo -u www-data crontab -e

www-data が Apache ユーザーであると仮定します。ファイルを作成することもできます/etc/cron.d/my-php-job

悪意のあるユーザーが /data/web/process.php ファイルを編集できないようにし、そのファイルを注意深く確認してください。このファイルはルート所有にして、権限を 644 にします。Apache ユーザーが所有して書き込み可能にしないでください。

答え2

次のことを試してください。

/path/to/php -f /data/web/process.php

関連情報