当前位置: 首页 > 知识库问答 >
问题:

PHPfile_exists返回false但文件确实存在

穆彬郁
2023-03-14

我见过几个类似的问题,但没有一个答案在我的情况下工作,除了它可能与权限有关。

Apache提供的PHP脚本告诉我,无法打开数据库文件。

当我打印该文件的路径时,它返回一个有效的路径,比如DBPATH。该文件确实存在于该位置;我给了它及其父文件夹777权限;我给了他们user: user访问权限,其中user是所有脚本文件所属的sudoer。我对整个htdocs/文件夹做了同样的处理,以防万一。

当我打印文件(DBPATH)时,它返回false。这很可能是权限的问题,但我不知道我应该修改什么才能让PHP拥有访问权限。我也尝试了apache:apache。我无法suapache(用户不可用)。

我的脚本在htdocs/中。DBFILE是它的某个地方(我尝试了/tmp/test,都在777中,但也没有运气)。

没有安全模式,新安装的PHP5.4,CentOS7。

请有人给我一个线索,至少帮助调试它。比如:我如何检查我的文件是否可以从apache/我的php脚本中读取,而不运行脚本本身?如何获取用于执行它的用户的名称?

共有2个答案

赵智勇
2023-03-14

您使用的是绝对路径还是相对路径?因为文件\u exists()不适用于HTTP地址(这是一个绝对路径)。但您可以输入相对路径。我也有同样的问题,它解决了。unlink()也存在同样的问题。

例如:

$file_relative_path = "./wp-content/uploads/fileDirectory/fileName.jpg";  
if (file_exists($file_relative_path)) {  
    unlink($file_relative_path);  
}
澹台承
2023-03-14

差不多解决了。

为了调试,我想到了将DBFILE移动到PHP脚本所在的同一文件夹中,并检查它是否可以找到它——它确实找到了。然后我将DBFILE在树中一个接一个地移动,以查看它在哪里停止查找它。

如果整个路径中只有一个文件夹没有所有用户的执行权限(xx5),则无法找到该文件,并且文件\u存在返回false

因此,解决方案是在完全可执行的位置创建另一个文件夹(/var/www/data/chmod 755 data之后工作),并将文件移动到那里。

 类似资料:
  • 问题内容: 问题是我需要先移动文件,然后其余逻辑才能工作,因此当方法返回false时,我将停止执行。 但是,当我在Windows资源管理器中检查文件时,它具有一个新名称,并且已移动。 只是好奇为什么会这样。 这是一些我刚刚尝试重新创建问题的示例代码。这几乎是同一件事,并且工作正常。 编辑:解决了。很抱歉浪费大家的时间这么愚蠢的事情。但是,我真的不认为如果没有发布此帖子,我不会对此进行追踪。 解决的

  • 我的主机上有一个图像文件。 FileZilla表示其已获得许可 然而: 返回false 可能的问题来源: PHP可能由于某些原因读取权限错误-PHP手册中读取文件权限的示例(函数)说明fileperms是 注意!:文件可以从Web浏览器访问-如果我将文件路径打印为

  • 在WordPress主题中,当一个联系人表单完成时,一条消息会写在页面上,但不会写在我想要的位置。但是当在PHP代码中更改消息的位置时,联系人表单中的段落(写在文章中)不再显示。事实上,我认为方法返回false,因此不会调用方法。 以下是原始代码: 我希望它是这样的: 如你所见,我只更改了确认消息的位置。但是在第二种方式中,具有的条件似乎不是真的,因为我在文章中写的文本没有显示出来。 有人能帮我解

  • 问题内容: 当我尝试从Java代码中删除tomcat服务器conf / Catalina / localhost中存在的文件时,file.delete()始终返回false。但是,如果我通过file.exists()函数检查文件,它将返回true。我没有任何例外。请帮助我们为什么会这样。有什么解决方案? 问题答案: 当我尝试从Java代码中删除tomcat服务器conf / Catalina /

  • 问题内容: 我当前正在编写一个脚本,该脚本必须检查所有指定的文件夹是否实际存在。我发现我必须将os.path.isdir()与绝对路径一起使用。 我有以下目录结构: 当我打开op我的python命令行并尝试文件夹是否确实存在时,我得到以下信息: 这很奇怪,因为当我将这些路径复制并粘贴到Windows资源管理器中时,我可以毫无问题地访问它们。我检查了权限,所有文件夹都具有相同的权限。有人知道我在做什

  • 我正在用sinon和ava做测试。我正在清除一些函数,并检查这些函数是否被调用。我检查了控制台,函数正在被调用。但是sinon返回的是notCalled(。称为假)。下面是这段代码。 }; });