通过命令行与 durect URL 运行时的文件路径问题


file path issue when running via command line versus durect URL

我们有一些通过命令行(CRON)运行的进程/usr/bin/php/path/to/site/root/index.php --uri=cli/fiveteen/clear_apc

最近对索引文件进行了更改:require_once(./opt/local/config/setting.php)

PHP 返回:没有这样的文件或目录

但是,直接从浏览器(相同的文件,路径)运行它,它可以正常运行,包括该文件:www.site.com/cli/fifteen/clear_apc

我想知道该路径问题是否有解决方法,而不必包含从根目录的整个路径(/path/to/site/opt/local/config/setting.php)

在 cron 和 apache 下运行时,工作目录是不同的。相对路径相对于当前工作目录,因此这就是代码未按预期工作的原因。

你可以试试require_once(dirname(__FILE__) . "../opt/local/config/setting.php")。这应该会生成一个从文件位置开始的绝对路径。

在这里查看所有魔术常数: http://php.net/manual/en/language.constants.predefined.php