用crontab执行php

时间:2010-04-22 08:34:53

标签: php crontab

我正在尝试按计划运行php脚本。所以我认为crontab是个好主意。我正在使用的服务器是在Linux上,我并不熟悉。所以我遇到的问题是,我不知道如何使脚本可以从PHP执行。我需要引用脚本,或将其放入可以从命令行运行php的文件夹中。所以我不知道给我的crontab提供什么路径,例如:

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

我在

中发现了一些关于这个php可执行文件的模糊信息
/usr/bin/php

但我找不到任何php文件,也许我没有安装它?我的php5和apache安装在:

/etc/php5

所以我的问题变成了,无论如何在任何其他文件夹中执行带有crontab的php脚本,或者我只是在usr / bin / php中缺少php可执行文件?

6 个答案:

答案 0 :(得分:30)

首先在命令行输入:

whereis php

以运行cron作业的用户身份执行此操作。这将显示可执行文件的路径。然后,您可以在cron条目中使用该路径(如果它不在您的PATH变量中):

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

编辑:如果安装了Apache PHP模块,则可能需要安装php5-cli(Ubuntu软件包名称)软件包。这将为您提供可以从命令行运行的二进制可执行文件。

答案 1 :(得分:5)

这是一个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

答案 2 :(得分:5)

我必须找到跟踪路径才能找到可执行文件:

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

答案 3 :(得分:2)

你也可以使用env,它会为你找到并启动php:

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

或者你可以在你的script.php(第一行)中放置一个shebang:

#!/usr/bin/env php

然后使其可执行,并让crontab直接调用它,就像在你的第一个例子中一样:

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

答案 4 :(得分:1)

您可以在本地使用wget命令:

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

答案 5 :(得分:0)

我建议你这样做,

*/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到外部网站而不是在本地工作。

请尝试恢复。