入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

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

创建时间:2014-04-04 投稿人: 浏览次数:2452

因为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





            
                
				
			
		
        	
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。