欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[备忘]在Linux下Ubuntu系统中用定时任务执行PHP文件

程序员文章站 2022-07-15 15:46:37
...

之前的写得有点笼统,这里重新优化一下,后续继续更新完善。

1、 先确认PHP可执行文件目录(暂时不管它),一般为:

/usr/bin/php

2、确认要执行的文件必须为可用读写权限,我直接设置的0777

3、编辑如下命令

#用crontab -e命令打开任务编辑,如下:

*/5 * * * * curl 'http://sss.test.com/OA/OaNotice/index'   //每5分钟定时发起一个请求

*/1 * * * * cd /www/web/www.ss.com;git pull // 每分钟更新一次代码

*/1 * * * * chown -R www-data:www-data /www/web/ //每分钟删除一次

*/1 * * * * /www/web/abc.playone.cn/task/order_warn_stask.php//每分钟执行PHP文件

4、然后保存重启。
提示:
启动:sudo /etc/init.d/cron start  关闭:sudo /etc/init.d/cron stop
重启:sudo /etc/init.d/cron restart  重新载入配置:sudo /etc/init.d/cron reload
可以用ps aux | grep cron命令查看cron是否已启动

5、调试

确认/usr/bin/php是否为PHP安装目录,一般是,但是确认起来很麻烦!(先确认其它情况吧)

确认要执行的PHP文件路径是否与任务文件中写的一致;

确认要执行的PHP文件代码是否错误,因为报错之后不会有提示;

确认要执行的文件是否具有读写权限;

可在命令窗口中输入命令直接访问任务文件中要访问的PHP文件;

例如:

php /var/www/html/task/realized_cash_task.php

看输出结果:

PHP Fatal error:  Uncaught Error: Call to undefined function log_to_write_txt() in /var/www/html/task/realized_cash_task.php:10
Stack trace:
#0 {main}
  thrown in /var/www/html/task/realized_cash_task.php on line 10

 这里报错了。解决错误后再次执行:

看输出结果:

[备忘]在Linux下Ubuntu系统中用定时任务执行PHP文件

这里红框处是没有错误信息的。表示执行成功。

然后再等待任务是否自动执行。

如果这样都不成功,那说明可能是第1步的问题。

END

================【再次完善】=================

我按照上面的步骤在新的Ubuntu环境下执行不生效!

我的调试步骤:

1、在crontab任务列表中改一下写法(crontab -e 打开任务列表):

*/1 * * * * /var/www/html/task/realized_cash_task.php >> /var/whlog.txt

说明:意思是执行这个PHP文件同时把执行结果写在/var/whlog.txt中,这路径随便你自己写,只要能找到就行。
 

2、按照上面改完测试:

Exception: Zend Extension /var/www/html/task/realized_cash_task.php does not exist

显示这个,大概意思就是不支持执行PHP,因为Zend代表PHPZend引擎。

3、还是第1步的问题,解决它:

OK!经过一番冥思苦想加上询问运维同志,得出结论就是在任务列表中/var/www/html/task/realized_cash_task.php的/var前面加上php就可以了,php后面要加空格。(还是不确定是不是第一步的问题,肯定有关系,加上php就行了,继续写代码)

完整代码:

*/1 * * * * php /var/www/html/task/realized_cash_task.php >> /var/whlog.txt

再次重启,运行成功!

END

上一篇: 代码执行漏洞

下一篇: IIS搭建网站