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