【问题标题】:file path issue when running via command line versus durect URL通过命令行与直接 URL 运行时的文件路径问题
【发布时间】:2013-02-01 14:32:20
【问题描述】:

我们有一些通过命令行 (CRON) 运行的进程 /usr/bin/php /path/to/site/root/index.php --uri=cli/fifteen/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) 开始的整个路径

【问题讨论】:

    标签: php filesystems


    【解决方案1】:

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

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

    在此处查看所有魔法常量http://php.net/manual/en/language.constants.predefined.php

    【讨论】:

    • dirname(__FILE__) 可以缩短为 __DIR__ 如果您运行 PHP 5.3 或更高版本(您应该这样做)。
    猜你喜欢
    • 2011-10-24
    • 2020-05-10
    • 2012-08-26
    • 1970-01-01
    • 2017-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-20
    相关资源
    最近更新 更多