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

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

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搭建网站

猜你喜欢