unlink无法删除文件

时间:2013-02-21 07:47:11

标签: php unlink

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

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

  1. 使用766权限在/ var / www下创建一个名为“files”的文件夹。
  2. 上传文件,在该文件夹中输入“image.png”&将权限设置为666
  3. 创建一个名为delete.php的php文件,将权限设置为644并上传到/ var / www目录
  4. 在浏览器中调用该文件(我使用localhost)
  5. “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);
    

    但仍无法删除该文件。

2 个答案:

答案 0 :(得分:5)

Unlink会在失败时发出警告。检查E_WARNING是否可见,以便了解最新情况。

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

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

答案 1 :(得分:2)

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

您应该创建一个分配了用户php的文件夹。如果您不能这样做,请让您的ISP进行此操作。这就是我解决类似问题的方法。

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