【问题标题】:Zend Framework 1.11.11 Include Path open_basedir issuesZend Framework 1.11.11 包含路径 open_basedir 问题
【发布时间】:2012-04-13 16:52:27
【问题描述】:

我在这个网站上看到了很多关于这个确切问题的问题,但我相当肯定我的情况有点不同。我最近从 ZF 1.9.6 升级到 1.11.11,从那时起,我的生产服务器就停止了工作。

我的本​​地主机正在运行 PHP 5.3.8,而服务器正在运行 5.2.11。我不确定这是否与它有关,但我想我会提到它以防万一。

当我第一次升级框架时,我收到了一堆open_basedir restriction in effect. 错误。通过从 index.php 文件中对 set_include_path() 的调用中删除 get_include_path(),我解决了其他几个人提到的问题。 As mentioned here.

这修复了 open_basedir 错误,但现在我在其他地方遇到了问题。由于各种原因,在几个不同的文件中,我使用 relative 路径通过 includerequire 语句包含文件。

例如:

require_once 'application/models/MyModel.php';

但是现在突然不行了!我不得不突然在所有这些路径前面加上 ./,如下所示:

require_once './application/models/MyModel.php';

问题是,也有很多实例需要手动检查并找到所有实例并进行更改。相反,我想弄清楚为什么这些路径不再在服务器上工作,而是继续在我的本地主机上工作。

我的倾向是,这与我不再在 index.php 文件中的 set_include_path() 中包含 get_include_path() 部分有关,但我不确定。

任何人都可以提供一些见解吗?谢谢!

【问题讨论】:

    标签: php zend-framework relative-path include-path


    【解决方案1】:

    我怀疑这与 this note 关于 open_basedir 的有关:

    使用 open_basedir 指定的限制是 PHP 5.2.16 和 5.3.4 以来的目录名称。以前的版本使用它作为前缀。

    作为前缀检查和作为目录检查的区别肯定会导致这样的问题。

    解决方案可能与 PHP 文档中的 this note 有关:

    使用 .在包含路径中允许相对包含,因为它表示当前目录。但是,显式使用 include './file' 比让 PHP 始终检查每个包含的当前目录更有效。

    因此,在设置包含路径时,我认为您应该像这样修改链接到的示例:

    set_include_path(
        APPLICATION_PATH . './../library' . PATH_SEPARATOR .
        APPLICATION_PATH . './../library/Zend'
    );
    

    注意“。”我在第一个正斜杠之前添加了。这应该使其相对于当前工作目录,并阻止您必须像 ./file 这样包含。

    另外,这说明这种方法效率较低,因此您还可以考虑使用TextCrawler 等工具对多个文件进行查找和替换。


    此外,您可以在设置时在包含路径中包含 '.'(当前目录 - 或 文档根)。像这样:

    set_include_path(APPLICATION_PATH . '../library' 
        . PATH_SEPARATOR . APPLICATION_PATH . '../library/Zend' 
        . PATH_SEPARATOR . '.' // <-- notice this!
    );
    

    【讨论】:

    • 嘿,非常感谢您的回复,内容非常丰富!我会试试看,明天我会告诉你交易是什么。
    • 我用添加到您的答案中的解决方案解决了这个问题。无论哪种方式,您的回答都很棒!干杯。
    • 太棒了,感谢您将这一点添加到答案中,希望它可以帮助其他人!
    猜你喜欢
    • 1970-01-01
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-06
    • 2016-03-02
    • 2012-06-05
    相关资源
    最近更新 更多