我见过几个类似的问题,但在我的情况下没有答案,除了它可能与权限有关。
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 :(得分:2)
解决,或多或少。
要调试我有想法将DBFILE移动到PHP脚本所在的同一文件夹,并检查它是否可以找到它 - 它确实如此。然后我在树枝中一个接一个地移动DBFILE文件夹,看看它在哪里找不到它。
如果整个路径中只有一个文件夹没有所有用户的执行权限(xx5),则无法找到该文件,并且file_exists
返回false
。
所以解决方案是在完全可执行的地方创建另一个文件夹(/var/www/data/
后chmod 755 data
工作),并将文件移到那里。
答案 1 :(得分:0)
你使用的是绝对路径还是相对路径?
因为 file_exists()
不适用于 HTTP 地址(这是一个绝对路径)。但是可以输入相对路径。
我有同样的问题,它修复了它。 unlink()
也有同样的问题。
示例:
$file_relative_path = "./wp-content/uploads/fileDirectory/fileName.jpg";
if (file_exists($file_relative_path)) {
unlink($file_relative_path);
}