crontab中PHP inlucde相对路径导致脚本不执行的解决办法
2025-04-17 16:42:56
因为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/bash
cd /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
————————————————
转:https://blog.csdn.net/wusuopuBUPT/article/details/22939013
发表评论: