PHP:is_readable不适用于相对路径,适用于绝对路径

时间:2011-03-09 20:19:52

标签: php

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

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

safe_mode已关闭且我的php.ini中未设置open_basedir。我也修改了文件权限,即使我使用chmod 777它也不起作用(但是因为它在使用绝对路径时读取正常所以无关紧要。)

3 个答案:

答案 0 :(得分:0)

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

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

chdir(dirname(__FILE__));

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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