web-dev-qa-db-ja.com

crontabを使用してPHPを実行する

Php-scriptを定期的に実行しようとしています。ですから、crontabは良い考えだと思いました。私が使用しているサーバーは、Linuxを使用しているため、あまり慣れていません。したがって、私が抱えている問題は、スクリプトをPHPから実行可能にする方法がわかりません。スクリプトを参照するか、コマンドラインからphpを実行できるフォルダーに配置する必要があります。だから私は私のcrontabを与えるためのパスがわからない、例えば:

5  * * * * var/www/some/path/script.php

私はこのphp実行可能ファイルについての漠然とした情報を見つけました

/usr/bin/php

しかし、そこにphpファイルが見つかりません。おそらくインストールされていませんか?私のphp5とApacheのインストールは次の場所にあります。

/etc/php5

だから私の質問になります、とにかくphp-scriptを他のフォルダーでcrontabで実行するのですか、それともusr/bin/phpにphp実行可能ファイルがないのですか?

18
Stefan Konno

まず、コマンドラインで次のように入力します。

whereis php

これは、cronジョブを実行するユーザーとして実行します。これにより、実行可能ファイルへのパスが表示されます。次に、cronエントリでそのパスを使用できます(PATH変数にまだ含まれていない場合)。

5 * * * * /your/path/to/php /var/www/some/path/script.php

編集: Apache PHPモジュールがインストールされている場合、php5-cli(Ubuntuパッケージ名)パッケージをインストールする必要があります。これにより、コマンドラインから実行できるバイナリ実行可能ファイル。

30
richsage

これはLinuxシステムですか?

新しいLinuxディストリビューションには、
実際には便利なcrontabセットアップシステム
ユーザーがcrontabに入力する必要はありません。たとえば、SuSE Linuxでは、ディレクトリがあります

/etc/cron.hourly/
/etc/cron.daily/
/etc/cron.monthly/
/etc/cron.weekly/

次のように、これらのディレクトリのいずれかに呼び出しスクリプト(konno_php_start)を置くだけです。

/etc/cron.hourly/konno_php_start

これは実行可能(chmod 755程度)で、以下を含みます:

#!/bin/sh
cd /var/www/some/path/
php  script.php >> logfile.txt 2>&1

cronデーモンを再起動します。それでおしまい。

ログファイルから、PHPインタープリターが
はPATHにあります。そうでない場合は、/ etc/cron.hourly/konno_php_startの行を次のように変更します

/full/path/to/php  script.php >> logfile.txt 2>&1

よろしく

rBO

5
rubber boots

実行可能ファイルを見つけるには、トレイルをたどる必要がありました。

andy@ararat:~$ type php
php is /usr/bin/php

andy@ararat:~$ file /usr/bin/php
/usr/bin/php: symbolic link to `/etc/alternatives/php'

andy@ararat:~$ file /etc/alternatives/php
/etc/alternatives/php: symbolic link to `/usr/bin/php5'

andy@ararat:~$ file /usr/bin/php5
/usr/bin/php5: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped

そのため、/ usr/bin/php5をphp実行可能ファイルへのパスとして含める必要があります。

andy@ararat:~$crontab -e
#*/1 * * * * /usr/bin/php5 /home/andy/www/dev.com/corp_rewards_cron.php
5
techjacker

env を使用することもできます。phpを見つけて起動します。

/usr/bin/env php /var/www/some/path/script.php

または、script.phpにシバンを配置することもできます(1行目):

#!/usr/bin/env php

次に、それを実行可能にして、最初の例のようにcrontabで直接呼び出すようにします。

5  * * * * /var/www/some/path/script.php
2
Victor Stanciu

ローカルでwgetコマンドを使用できます。

5  * * * * wget http://localhost/some/path/script.php
1
Etienne Martin

このようにすることをお勧めします

*/5 * * * * /path/gridmon2.pl 1> /dev/null 2> /dev/null

.plコードでは、wgetなどを使用してgrepを実行する必要があります。

wget "/www/root/index.php"

またはあなたはこのようにすることができます:

/usr/bin/wget "/www/root/index.php"

それは私の提案です、私はローカルではなく外部サイトにwgetを試してみましたが、それは機能します。

元に戻してみてください。

0
Nazrul Muhaimin