在cron作业中执行PHP脚本

时间:2014-03-12 16:48:56

标签: php linux apache cron centos

在我们的centos6服务器中。我想在cron job中执行一个php脚本作为apache用户,但遗憾的是它不起作用。

这是crontab(crontab -uapache -e)

的版本
24 17 * * * php /opt/test.php

这是" test.php"的源代码。文件适用于" apache"用户为所有者。

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

我尝试用php的完整路径替换php(/ usr / local / php / bin / php)但它也不起作用

提前致谢, 请帮帮我

4 个答案:

答案 0 :(得分:67)

Automated Tasks: Cron

Cron是Linux / Unix类计算机操作系统中基于时间的调度服务。 Cron作业用于安排定期执行的命令。 您可以设置命令或脚本,这些命令或脚本将在设定的时间重复运行。 Cron是Linux或UNIX操作系统中最有用的工具之一。 cron服务(守护程序)在后台运行,并不断检查 / etc / crontab 文件, / etc / cron。 / *目录。它还会检查 / var / spool / cron / 目录。

配置Cron任务

在以下示例中,下面显示的 crontab命令将每十分钟自动激活一次cron任务:

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

在上面的示例中,* / 10 * * * *表示任务发生的时间。第一个数字代表分钟 - 在这种情况下,每隔“十”分钟。其他数字分别代表小时星期几

*是一个通配符,意思是“每次”

首先输入命令行来找到 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!

答案 1 :(得分:11)

我遇到了同样的问题......我必须以用户身份运行它。

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

答案 2 :(得分:1)

您可能需要以具有执行PHP脚本权限的用户身份运行cron作业。尝试使用命令runuserman runuser)以root身份执行cron作业。或者创建一个系统crontable并以授权用户身份运行PHP脚本,如@Philip描述的那样。

我在此stackoverflow帖子中提供了如何使用cron的详细解答。

How to write a cron that will run a script every day at midnight?

答案 3 :(得分:0)

我尝试了 PATH 的所有组合,但都不起作用。 可能他们是需要的。

就我而言,使用 Centos 7,重启或服务器工作。