PHP file_exists返回false但文件确实存在

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

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

当我打印到该文件的路径时,它返回一个有效的路径,比如说DBPATH.该文件确实存在于该位置;我给它和它的父文件夹777权限;我给了用户:user access,其中user是所有脚本文件所属的sudoer.我对整个htdocs /文件夹做了同样的事,以防万一.

当我打印file_exists(DBPATH)时,它返回false.很可能是权限问题,但我不知道我应该为PHP改变什么来获得访问权限.我试过apache:也是apache.我不能su apache(用户不可用).

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

没有safe_mode,PHP 5.4新安装,CentOS7.

请有人给我一个线索,至少帮助调试它.
也许是这样的:如何在不运行脚本本身的情况下检查我的文件是否可以从apache / my php脚本中读取?如何获取用于执行它的用户的名称?

最佳答案 解决了,或多或少.

为了调试我有想法将DBFILE移动到PHP脚本所在的同一文件夹,并检查它是否可以找到它 – 它确实如此.然后我在树枝中一个接一个地移动DBFILE文件夹,看看它在哪里找不到它.

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

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

点赞