2015-10-15 134 views
4

我已经看到了几个类似的问题,但没有答案在我的情况下工作,除了它可能与权限有关。PHP file_exists返回false,但该文件确实存在

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,但没有运气)。

没有safe_mode,新安装的PHP 5.4,CentOS7。

请有人给我一个线索,至少帮助调试它。 也许是这样的:如何检查我的文件是否可以从apache/my php脚本中读取,而无需运行脚本本身?我怎样才能得到用来执行它的用户名?

+0

你能通过'cat DBPATH'打开文件吗? –

+1

'file_exists'不说谎,某处不对。我猜你的'DBPATH'不正确。 请注意,如果您将文件包含在某处,则当前目录是包含所有内容的根文档的目录。 – x13

+0

您是否尝试使用文件的绝对路径? –

回答

2

解决,或多或少。

调试我有想将DBFILE移动到PHP脚本所在的同一文件夹,并检查它可以找到它 - 它做到了。然后我将DBFILE文件夹中的一个接一个地移动到树状结构中,以查看它停止找到它的位置。

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

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

相关问题