手机版

PHP file存在

时间:2021-10-09 来源:互联网 编辑:宝哥软件园 浏览:

问题公司有一个基于smarty编写的框架,我负责升级php。维护人员搭建好新环境后,测试人员要求我经常报错(错误:表示找不到文件)。我追踪了代码,结果发现smarty的这个地方报告了错误。

错误:此处报告文件不存在。思考过程:1。我以为这个文件不在程序里,但是我发现有一个文件。发生了什么事?2.后来我猜测是不是php内核有问题。我又看了一遍php的相关内核文件,没有发现问题。结果,我把整个过程告诉了项目经理。3354的事情也没有解决,所以先结束了。升级的事情先耽搁了。今天,我又发现了这个问题。我的第一反应是php版本有没有升级,但是我发现没有,3354之后整个目录设置为777,还好(chmod 777 -R目录)。我认为这是file_exists()方法的问题。为此,我进行了相关的调试和实验。

调试过程调试代码:

目录:

观察每个权限:test在www上没有权限,而执行文件index.php有读写权限,包括文件test . txt

运行结果:

目录的执行权限影响file_exists()1。给予测试最高权限——755

既然成功了,就说明file_exists()函数受目录权限的限制。什么样的目录权限影响file_exists()?我做过几个实验:1。对于该文件的任何上级目录,在授予权限之前,该文件不存在;2.文件的任何父目录都将报告该文件只有在具有读取权限时才不存在;3.当所有上级目录都有执行权限时,报告文件存在,一切正常。结果表明,file_exists()在判断文件是否存在时,递归判断每个目录是否具有执行权限。将文件路径修改为相对路径,得到相同的结果。

php手册中没有提到file_exists会受到目录执行权限的影响。本文告知在这方面有问题的开发人员。就当这是个警告。附加信息谢谢你的信息,非常有用。大家评论后,我又看了一遍说明书。实际上,如果目录没有执行权限,那么php-fpm应用程序进程就无法在这个目录下搜索文件,当然,会认为文件不存在(实际上,会认为没有可执行文件的目录不存在)。手册内容,大家可以一起考虑,主要是执行权限。这里就不详细讨论读写权限了(一般都很好理解)。

在明显的手册中,对目录的执行权限有明确的说明。执行目录的权利就是被搜索的权利。

版权声明:PHP file存在是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。