2013-02-21 108 views
4

我对使用PHP unlink()在ubuntu中删除文件感到沮丧。取消链接无法删除文件

我创建了一个非常简单的模拟如下:

  1. 创建一个文件夹命名为 “文件” 下的/ var/WWW与766的权限。
  2. 上传文件,让说:“image.png”文件夹&在设置权限为666
  3. 创建一个名为delete.php一个php文件,权限设置为644,并上传到/ var/www目录
  4. 调用浏览器中的文件(我使用localhost)

的 “image.png” 仍然存在于 “文件” 目录

这里是delete.php的PHP脚本:

$filename = 'image.png'; 
$file = $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'files' . DIRECTORY_SEPARATOR . $filename; 
unlink($file); 

我也尝试下面的脚本:

$filename = 'image.png'; 
$dir = $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'files'; 
chdir($dir); 
unlink($filename); 

但仍然无法删除该文件。

+5

创建image.png的用户与www-data(或谁曾经运行apache?)的用户相同 – 2013-02-21 07:49:28

回答

2

该目录的文件夹/所有者可能是与用于运行php的用户不同的用户。

您应该创建一个用户php分配的文件夹。如果你自己做不到这一点,请让你的ISP去做。这就是我解决类似问题的方法。

一个用户无法删除unix系统上的其他用户的文件。 如果您将其设置为777,则可以将其删除...

+1

如果您可以通过SSH连接到机器,那么也许您可以运行'll'命令来查看要从中删除的文件以及要删除的文件。通常,您的php脚本由ftp用户拥有,并由root用户上传文件。这将有助于将它们都放在一个用户组中。 – Khuram 2013-02-21 07:54:52

+0

当我将所有权更改为万维网数据时,可以删除该文件。感谢所有的帮助。 – user1134475 2013-02-22 01:33:53

5

Unlink在失败时会引发警告。检查E_WARNING是否可见,以便了解发生了什么。

它通常归结为用户权利。请记住,如果您的脚本是由浏览器执行的,通常名为wwwrunwwwdata(或类似的)的用户正在您的服务器上执行它。

检查此用户是否有权删除,然后重试。

相关问题