web-dev-qa-db-ja.com

cronジョブでPHPスクリプトを実行

Centos6サーバー内。 Apacheユーザーとしてcronジョブでphpスクリプトを実行したいのですが、残念ながら機能しません。

こちらがcrontabのエディションです(crontab -uapache -e)

24 17 * * * php /opt/test.php

そして、「Apache」ユーザーが所有者として問題なく機能する「test.php」ファイルのソースコードを次に示します。

<?php exec( 'touch /opt/test/test.txt');?>

Phpをphpのフルパス(/ usr/local/php/bin/php)に置き換えようとしましたが、動作しません

事前に感謝、私を助けてください

27
Khalilos

自動タスク:Cron

Cronは、Linux/Unixに似たコンピューターオペレーティングシステムの時間ベースのスケジューリングサービスです。 cronジョブは、定期的に実行されるコマンドをスケジュールするために使用されます。設定した時間に繰り返し実行されるコマンドまたはスクリプトをセットアップできます。 Cronは、LinuxまたはUNIXのようなオペレーティングシステムで最も便利なツールの1つです。 cronサービス(デーモン)はバックグラウンドで実行され、/ etc/crontabファイル/ etc /を常にチェックしますcron。/ *ディレクトリ。また、/ var/spool/cron /ディレクトリもチェックします。

Cronタスクの構成

次の例では、以下に示すcrontabコマンドは、10分ごとにcronタスクを自動的にアクティブにします。

*/10 * * * * /usr/bin/php /opt/test.php

上記のサンプルでは、​​/10 * * * *はタスクがいつ発生するかを表します。最初の図はminutesを表します–この場合、「10」分ごとに。他の数字はそれぞれ、hourdaymonthおよび曜日

*はワイルドカードで、「毎回」を意味します

コマンドラインに入力して、[〜#〜] php [〜#〜]バイナリを見つけることから始めます。

whereis php

出力は次のようになります。

php:/ usr/bin/php /etc/php.ini /etc/php.d/usr/lib64/php/usr/include/php/usr/share/php /usr/share/man/man1/php.1 .gz

コマンドでフルパスを正しく指定してください。

次のコマンドを入力して、cronjobを入力します。

crontab -e

取得した内容を確認するにはcrontab

編集1:

保存せずにvimエディターを終了するには、次をクリックします。

Shift+:

そして、q!

71
Ilia Rostovtsev

私も同じ問題を抱えていました...ユーザーとして実行する必要がありました。

00 * * * * root /usr/bin/php /var/virtual/hostname.nz/public_html/cronjob.php
11
Philip

PHPスクリプトを実行する権限を持つユーザーとしてcronジョブを実行する必要がある場合があります。コマンドrunuserman runuser)。または、システムcrontableを作成し、@ Philipが説明したように、許可ユーザーとしてPHPスクリプトを実行します。

このstackoverflowの投稿でcronの使用方法に関する詳細な回答を提供します。

毎日真夜中にスクリプトを実行するcronの作成方法

1
Russell E Glaue