crontab中PHP inlucde相对路径导致脚本不执行的解决办法

来源:互联网 发布:简易c语言程序 编辑:程序博客网 时间:2024/05/01 20:30

因为crontab默认在/root下执行,所以php脚本引入相对路径时,会按照crontab执行路径(/root)去include文件,所以就找不到要include的文件了。

include ('../inc/common.inc.php');

解决办法一:

chdir(dirname(__FILE__));// cd 到php脚本所在的目录include ('../inc/common.inc.php');


因为__DIR__ dirname(__FILE__)是等价的,所以,上面的语句和下面这条语句是一样的:

include (__DIR__.'/../inc/common.inc.php');


解决办法二:


借助shell(假设我的php脚本(my_script.php)在/var/www/my_project 目录下):

#!/bin/bashcd /var/www/my_project && php my_script.php >> /var/log/my_script.log 2>&1


上面的命令先cd 到脚本所在路径,
然后执行脚本,
最后把标准错误输出和标准输出都重定向到/var/log/my_script.log中


参考:
1. http://stackoverflow.com/questions/1969374/relative-path-not-working-in-cron-php-script

2. http://linux-wiki.cn/wiki/zh-hans/Bash%E7%9A%84%E8%BE%93%E5%85%A5%E8%BE%93%E5%87%BA%E9%87%8D%E5%AE%9A%E5%90%91


0 0
原创粉丝点击