PHP file_exists returns false 但文件确实存在
PHP file_exists returns false but the file does exist
我见过几个类似的问题,但没有一个答案适合我的情况,除了它可能与权限有关。
Apache 提供的 PHP 脚本告诉我 unable to open database file
。
当我打印该文件的路径时,它 returns 是一个有效路径,比如 DBPATH。该文件确实存在于该位置;我给了它和它的父文件夹 777
权限;我给了他们 user:user
访问权限,其中 user
是所有脚本文件所属的 sudoer。我对整个 htdocs/
文件夹做了同样的操作,以防万一。
当我打印 file_exists(DBPATH)
时,它 returns 为假。很可能是权限问题,但我不知道我应该更改什么才能让 PHP 拥有访问权限。我也试过 apache:apache
。我不能 su apache
(用户不可用)。
我的脚本在 htdocs/
中。 DBFILE 不在其中(我试过 /tmp/test
,都在 777
中,但也不走运)。
没有safe_mode,PHP5.4全新安装,CentOS7.
请至少有人给我一个线索来帮助调试它。
可能是这样的:如果没有 运行 脚本本身,我如何检查我的文件是否可以从 apache/my php 脚本读取?如何获取用于执行它的用户的名称?
或多或少解决了。
为了调试,我想到了将 DBFILE 移动到 PHP 脚本所在的同一文件夹,并检查它是否可以找到它 - 它找到了。然后我在树中一个接一个地移动 DBFILE 文件夹,看看它在哪里停止找到它。
出现如果整个路径中只有一个文件夹没有所有用户执行权限(xx5),找不到文件,file_exists
returns false
.
所以解决方案是在一个完全可执行的地方创建另一个文件夹(/var/www/data/
在 chmod 755 data
之后工作),然后将文件移到那里。
你用的是绝对路径还是相对路径?
因为 file_exists()
不适用于 HTTP 地址(绝对路径)。但是可以输入相对路径。
我有同样的问题,它解决了它。 unlink()
也是同样的问题。
示例:
$file_relative_path = "./wp-content/uploads/fileDirectory/fileName.jpg";
if (file_exists($file_relative_path)) {
unlink($file_relative_path);
}
我见过几个类似的问题,但没有一个答案适合我的情况,除了它可能与权限有关。
Apache 提供的 PHP 脚本告诉我 unable to open database file
。
当我打印该文件的路径时,它 returns 是一个有效路径,比如 DBPATH。该文件确实存在于该位置;我给了它和它的父文件夹 777
权限;我给了他们 user:user
访问权限,其中 user
是所有脚本文件所属的 sudoer。我对整个 htdocs/
文件夹做了同样的操作,以防万一。
当我打印 file_exists(DBPATH)
时,它 returns 为假。很可能是权限问题,但我不知道我应该更改什么才能让 PHP 拥有访问权限。我也试过 apache:apache
。我不能 su apache
(用户不可用)。
我的脚本在 htdocs/
中。 DBFILE 不在其中(我试过 /tmp/test
,都在 777
中,但也不走运)。
没有safe_mode,PHP5.4全新安装,CentOS7.
请至少有人给我一个线索来帮助调试它。 可能是这样的:如果没有 运行 脚本本身,我如何检查我的文件是否可以从 apache/my php 脚本读取?如何获取用于执行它的用户的名称?
或多或少解决了。
为了调试,我想到了将 DBFILE 移动到 PHP 脚本所在的同一文件夹,并检查它是否可以找到它 - 它找到了。然后我在树中一个接一个地移动 DBFILE 文件夹,看看它在哪里停止找到它。
出现如果整个路径中只有一个文件夹没有所有用户执行权限(xx5),找不到文件,file_exists
returns false
.
所以解决方案是在一个完全可执行的地方创建另一个文件夹(/var/www/data/
在 chmod 755 data
之后工作),然后将文件移到那里。
你用的是绝对路径还是相对路径?
因为 file_exists()
不适用于 HTTP 地址(绝对路径)。但是可以输入相对路径。
我有同样的问题,它解决了它。 unlink()
也是同样的问题。
示例:
$file_relative_path = "./wp-content/uploads/fileDirectory/fileName.jpg";
if (file_exists($file_relative_path)) {
unlink($file_relative_path);
}