我正在将网站从一台服务器移动到另一台服务器。在旧服务器上,我的代码调用is_readable(“filename”)并且它可以工作。在新服务器上,它不起作用。文件完全相同,“filename”与调用页面位于同一位置。
当我输入绝对路径时,is_readable会按预期返回true。关于问题可能是什么建议?
safe_mode已关闭且我的php.ini中未设置open_basedir。我也修改了文件权限,即使我使用chmod 777它也不起作用(但是因为它在使用绝对路径时读取正常所以无关紧要。)
答案 0 :(得分:0)
服务器可能具有不同的配置,导致当前工作目录(CWD)不是正在读取脚本的那个。相对路径始终相对于CWD,而不是当前正在执行的脚本。
您可以通过调用getcwd()
或使用realpath()
来检查CWD,以将相对路径解析为绝对路径。如果值不正确,则必须正确配置服务器,或通过执行以下操作手动设置CWD:
chdir(dirname(__FILE__));
答案 1 :(得分:0)
答案 2 :(得分:0)
通常,如果您将相对路径传递给is_readable(或file_exists),它将返回false ,除非 路径恰好相对于当前的PHP直接 - View PHP chdir info