【问题标题】:PHP: is_readable not working for relative path, works for absolutePHP:is_readable 不适用于相对路径,适用于绝对路径
【发布时间】:2011-07-12 05:18:14
【问题描述】:

我正在将站点从一台服务器移动到另一台服务器。在旧服务器上,我的代码调用 is_readable("filename") 并且它可以工作。在新服务器上,它不起作用。这些文件完全相同,并且“文件名”相对于调用页面位于同一位置。

当我输入绝对路径时,is_readable 会按预期返回 true。有关问题可能是什么的任何建议?

safe_mode 已关闭,并且我的 php.ini 中未设置 open_basedir。我还修改了文件权限,即使我 chmod 777 也不起作用(但这没关系,因为它在使用绝对路径时可以正确读取)。

【问题讨论】:

  • 感谢您的回答。似乎,在新服务器上,当前工作目录未设置为与执行脚本的目录相同。我不确定如何配置它,所以创建了另一个问题:stackoverflow.com/questions/5254000/…

标签: php


【解决方案1】:

服务器可能具有不同的配置,导致 当前工作目录 (CWD) 不是正在读取脚本的目录。相对路径总是相对于 CWD,而不是当前执行的脚本。

您可以通过调用getcwd() 或使用realpath() 将相对路径解析为绝对路径来检查CWD。如果值不正确,您必须正确配置服务器,或通过执行以下操作手动设置 CWD:

chdir(dirname(__FILE__));

【讨论】:

    【解决方案2】:

    尝试在您的相对路径上使用realpath 以检查它是否指向正确的文件。

    您也可以使用getcwd 来检查您是否在正确的目录中。

    【讨论】:

      【解决方案3】:

      通常,如果您将相对路径传递给 is_readable(或 file_exists),它将返回 false 除非该路径恰好与当前 PHP 直接相关 -- View PHP chdir info

      【讨论】:

        猜你喜欢
        • 2012-08-29
        • 2010-10-28
        • 1970-01-01
        • 2011-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多