14

我创建了一个站点,它具有上传文件的功能,并且该文件被上传到服务器

我只是 php 的新手,我下载了 xampp,然后运行我在本地机器上创建的这个站点。我的网站是这样的,您上传一个文件,然后该文件将上传到服务器,但是当我尝试 unlink() 时,因为当我尝试将文件名删除到数据库时,我也想删除服务器上的该图片,而是我收到一个错误,上面写着"Permission denied"

问题:
如何获得使用 unlink(); 的权限?

我只使用 xampp 在我的本地机器上运行它

4

2 回答 2

12

发生权限被拒绝错误是因为您尝试删除文件而没有足够/正确的权限来执行此操作。

为此,您必须使用超级用户帐户或者是上传文件的同一用户。

您可以从命令行转到该目录并检查为该文件设置的权限。

最简单的解决方案是以管理员/root 身份登录并删除文件。

这是另一个解决方法:

// define if we under Windows
$tmp = dirname(__FILE__);
if (strpos($tmp, '/', 0)!==false) {
  define('WINDOWS_SERVER', false);
  } else {
  define('WINDOWS_SERVER', true);
}
  $deleteError = 0;
  if (!WINDOWS_SERVER) {
    if (!unlink($fileName)) {
      $deleteError = 1;
    }
  } else {
    $lines = array();
    exec("DEL /F/Q \"$fileName\"", $lines, $deleteError);
  }
  if ($deleteError) {
    echo 'file delete error';
  }


还有更多:PHP Manual, unlink(), Post 106952

我建议,总是首先检查 PHP 手册(如果您的问题涉及 PHP),只需转到您遇到问题的功能页面,然后单击CTRL+F搜索浏览器并输入,例如,,Windows因此,在您的情况下,您会找到至少 7 个相关帖子或非常接近您正在寻找的帖子。

于 2012-08-27T19:24:52.233 回答
4

阅读此网址

如何使用 Unlink() 函数

在函数 unlink() 的注释中找到了这些信息

在 Windows 系统和 Apache 下,拒绝访问文件是取消链接文件的常见错误。要删除文件,您必须更改文件的所有者。一个例子:

<?php 

chown($TempDirectory."/".$FileName,666); //Insert an Invalid UserId to set to Nobody Owern; 666 is my standard for "Nobody" 
unlink($TempDirectory."/".$FileName); 

?>

所以尝试这样的事情:

$Path = './doc/stuffs/sample.docx';

chown($Path, 666);

if ( unlink($Path) )
    echo "success";
else
    echo "fail";

编辑 1

尝试在路径中使用它:

$Path = '.'.DIRECTORY_SEPARATOR.'doc'.DIRECTORY_SEPARATOR.'stuffs'.DIRECTORY_SEPARATOR.'sample.docx';
于 2012-08-27T19:28:04.437 回答