我有一个删除文件的PHP脚本。它可以从我的根目录中删除文件,但是当我尝试从子目录中删除时,它说"权限被拒绝"。我知道该文件存在,PHP 可以访问它,因为我可以读取和写入该文件,但我无法删除它。为什么?
编辑:如果这是相关的,我正在使用Zymic托管。但是我在 Zymic 上还有另一个网站,删除工作正常。我不明白...
编辑:我使用ajax访问带有要删除的代码的PHP文件,并且ajax发送要删除的文件名。我知道它发送的文件名是正确的,因为警告消息会为我打印它。PHP 代码很简单:
$file=$_POST['file'];
echo unlink($file);
编辑:我修好了!我不知道为什么这有效,但我将目录从 755 FTP 修改为 775 谁能告诉我为什么它有效?
要删除该文件,您需要对包含该文件的文件夹具有写入权限,请先检查该权限。
CHMOD xxx -> 所有者组 其他
第一种情况:755 - 所有者
(读取、写入、执行)、组(读取、执行)、其他(读取、执行)第二种情况:775 - 所有者(读取、写入、执行)、组(读取、写入、执行)、其他(读取、执行)
尝试在正在运行的
脚本的开头添加以下内容:
error_reporting(E_ALL | E_STRICT);
这应该能够准确地指出发生了什么,很可能您没有写入文件夹的权限
特别是如果你在Linux环境中工作。在Linux中,一切都是文件,甚至是文件夹。在删除文件时,您需要能够写入代表文件夹的文件,这就是为什么有权写入您尝试删除的文件与删除它没有任何关系的原因。
在使用unlink($myfile)之前,您必须先关闭($myfile),因为如果它在服务器上被任何人打开,它将不会删除它。同时将此脚本放在与要删除的文件相同的目录中,否则您可能会意外删除整个 DIR。