如果将PHP脚本作为cron脚本运行,则如果使用相对路径,则include常常会失败。例如,如果您有
require_once('foo.php');
在命令行上运行时会找到文件foo.php,但从cron脚本运行时找不到。
一个典型的解决方法是先chdir到工作目录,或使用绝对路径。但是,我想知道导致此行为的cron和shell之间的区别是什么。在cron脚本中使用相对路径时,为什么会失败?
从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