当文件名通过变量传递时,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的主要内容,如果未能解决你的问题,请参考以下文章

is_file,is_dir,file_exists

file_exists() 不起作用,但是当在浏览器中给出图像的 url 时,会显示图像

File_exists 功能不起作用

PHP Phar - file_exists() 问题

附加到 PHP 变量,但在 '.jpg' / '.png' 等之前

使用lambda函数进行向量排序,当不在同一范围内时如何传递变量来捕获组?