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

Jul*_*enD 6 php apache file-exists

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

Apache 提供的 PHP 脚本告诉我unable to open database file

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

当我打印时file_exists(DBPATH),它返回 false。这很可能是权限问题,但我不知道应该更改什么才能使 PHP 具有访问权限。我apache:apache也尝试过。我不能su apache(用户不可用)。

我的脚本位于htdocs/. DBFILE不在其中(我尝试过/tmp/test,全部都在777,但也没有运气)。

无安全模式,新安装 PHP 5.4,CentOS7。

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

Jul*_*enD 3

解决了,或多或少。

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

出现整个路径中只有一个文件夹没有所有用户(xx5)的执行权限,则找不到该文件并file_exists返回false

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