当你将php命令行脚本加入到linux cron计划任务中后,如果使用requireinclude加载相对路径中的文件总是报错

可以用以下几个方案来解决问题:

假设脚本项目所在根目录为/home/wwwroot/running; 该目录下又两个文件:run.phpfoo.php; 其中run.php需要执行的文件; 如果你运行:

  1. require_once('foo.php');

文件foo.php在命令行模式下是能够被加载的,但如果在cron任务计划中运行,则无法被正确加载;

解决方案一:通过绝对路径加载

  1. require('/home/wwwroot/running/foo.php')

解决方案二:进入当前工作目录后加载

  1. $curDir = dirname(__FILE__);
  2. chdir($curDir);
  3. require('foo.php');//加载文件相对当前目录所在位置

解决方案三:设置包含路径(推荐)

  1. define('ROOT_PATH',dirname(__FILE__) . '/../'); //设定根目录路径常量
  2. set_include_path(ROOT_PATH);//所有要加载的文件都以根路径开始
  3. require('running/foo.php');//相当于普通情况下加载'/home/wwwroot/running/foo.php'

分类: web

标签:   php