4

我对使用 PHP unlink() 在 ubuntu 中删除文件感到沮丧。

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

  1. 在具有 766 权限的 /var/www 下创建一个名为“files”的文件夹。
  2. 上传文件,在该文件夹中说“image.png”并将权限设置为666
  3. 创建一个名为delete.php的php文件,设置权限为644并上传到/var/www目录
  4. 在浏览器中调用文件(我使用本地主机)

“image.png”仍然存在于“files”目录中

这是 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);

但仍然无法删除文件。

4

2 回答 2

5

取消链接会在失败时发出警告。检查 E_WARNING 是否可见,以了解发生了什么。

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

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

于 2013-02-21T07:52:47.623 回答
2

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

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

一个用户不能在 unix 系统上删除另一个用户的文件。如果您将其设置为 777 那么您可以将其删除...

于 2013-02-21T07:52:14.650 回答