一尘不染

相对路径在cron PHP脚本中不起作用

php

如果将PHP脚本作为cron脚本运行,则如果使用相对路径,则include常常会失败。例如,如果您有

require_once('foo.php');

在命令行上运行时会找到文件foo.php,但从cron脚本运行时找不到。

一个典型的解决方法是先chdir到工作目录,或使用绝对路径。但是,我想知道导致此行为的cron和shell之间的区别是什么。在cron脚本中使用相对路径时,为什么会失败?


阅读 242

收藏
2020-05-29

共1个答案

一尘不染

从cron运行时,脚本的工作目录可能不同。另外,关于PHPs require()和include()的理解有些混乱,这引起了关于工作目录确实是问题的困惑:

include('foo.php') // searches for foo.php in the same directory as the current script
include('./foo.php') // searches for foo.php in the current working directory
include('foo/bar.php') // searches for foo/bar.php, relative to the directory of the current script
include('../bar.php') // searches for bar.php, in the parent directory of the current working directory
2020-05-29