当文件名通过变量传递时,file_exists 返回 false
Posted
技术标签:
【中文标题】当文件名通过变量传递时,file_exists 返回 false【英文标题】:file_exists returning false when filename is passed through a variable 【发布时间】:2013-01-05 14:57:34 【问题描述】:我很难过,而且我确定我在这里遗漏了一些非常基本的东西。安全模式被禁用,文件存在。
这段代码:
$dir = "textfiles"
chdir('../'.$dir."/");
//using a Windows Slash here(Wamp Stack, on Windows 7 Dev environment
$filename = getcwd() ."\\". $row[0];
//echoing this outputs:
//C:\wamp\www\wordpress\textfiles\New Text Document.txt
$filename = str_replace("\\","\\\\",$filename);
//echoing this outputs C:\\wamp\\www\\wordpress\\textfiles\\New Text Document.txt
//escaping slashes in filename to prevent escaping. I SUSPECT my issue may be
// related to this
//if (file_exists("C:\\wamp\\www\\wordpress\\textfiles\\New Text Document.txt"))
//Line above is commented out, but when it replaces the line below, this thing
//returns True
if (file_exists($filename)) echo "Yes";
else echo $filename;
【问题讨论】:
第一行缺少分号是错字吗? 另外,您可能希望使用目录常量DIRECTORY_SEPARATOR
而不是显式编写分隔符。
【参考方案1】:
注释掉一行
/* $filename = str_replace("\\","\\\\",$filename); */
你的代码应该可以工作。
【讨论】:
不幸的是,没有。我已经尝试了很多次,然后又做了一次。感谢您的回复。 更正:你是对的,因为我的数据是从数据库中提取的,所以文件名末尾有一个错误的空格。一个简单的 trim() 解决了我的问题 那你需要弄清楚为什么会有这样的空格;-)以上是关于当文件名通过变量传递时,file_exists 返回 false的主要内容,如果未能解决你的问题,请参考以下文章
file_exists() 不起作用,但是当在浏览器中给出图像的 url 时,会显示图像