在 cron 作业中执行 PHP 脚本
Posted
技术标签:
【中文标题】在 cron 作业中执行 PHP 脚本【英文标题】:Execute PHP script in cron job 【发布时间】:2014-04-16 23:49:16 【问题描述】:在我们的 centos6 服务器中。我想以apache用户的身份在cron作业中执行一个php脚本,但不幸的是它不起作用。
这里是crontab的版本(crontab -uapache -e)
24 17 * * * php /opt/test.php
这里是“test.php”文件的源代码,它可以在“apache”用户作为所有者时正常工作。
<?php exec( 'touch /opt/test/test.txt');?>
我尝试用 php 的完整路径 (/usr/local/php/bin/php) 替换 php,但它也不起作用
提前致谢, 请帮帮我
【问题讨论】:
肯定只有“php”就足够了吗?根据我使用 CentOS 的经验,正确配置 PHP 以及它所需要的所有安全性和诸如此类的东西可能是一场噩梦。 【参考方案1】:我尝试了所有与 PATH 的组合,但都不起作用。 可能需要它们。
在我的例子中,使用 Centos 7,重启或服务器工作正常。
【讨论】:
【参考方案2】:您可能需要以有权执行 PHP 脚本的用户身份运行 cron 作业。尝试使用命令runuser
(man runuser
) 以 root 身份执行 cron 作业。或者创建一个系统 crontable 并以授权用户身份运行 PHP 脚本,如@Philip 所述。
我在这篇 *** 帖子中提供了如何使用 cron 的详细答案。
How to write a cron that will run a script every day at midnight?
【讨论】:
【参考方案3】:我遇到了同样的问题...我必须以用户身份运行它。
00 * * * * root /usr/bin/php /var/virtual/hostname.nz/public_html/cronjob.php
【讨论】:
【参考方案4】: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!
【讨论】:
感谢您的回复,我这样做了,但我想在 apache crontab (crontab -uapache -e) 中执行该脚本,但该脚本尚不可用。实际上脚本在 crontab 根目录中工作正常(当我在 crontab -e 中添加它时) @Khalilos 应该是crontab -u apache -e
,你是这个意思吗?
是的,但是当我在 'crontab -u apache -e' 中添加脚本时它不起作用
应该是/usr/bin/php -f /opt/test.php
,而不是/usr/bin/php /opt/test.php
?
@user2768 Both ways (whether using the -f switch or not) execute the file my_script.php. Note that there is no restriction on which files can be executed; in particular, the filename is not required have a .php extension.
php.net/manual/en/features.commandline.usage.php以上是关于在 cron 作业中执行 PHP 脚本的主要内容,如果未能解决你的问题,请参考以下文章