PHP - unlink('file_name')不起作用

时间:2017-10-09 12:30:45

标签: php file-permissions delete-file unlink

尝试使用unlink('filename')删除PHP中的文件时遇到问题。 我尝试过一个复杂的文件但它没有用。我一直在使用相对路径作为其他帖子的建议。

所以我使最简单的脚本成为可能:

<?php
unlink("acs.gif");
?>

该脚本与我的asc.gif位于同一文件夹中,但它仍无法正常工作。 我没有致命错误,并在启用error_reporting()init_set()时发出警告。但文件仍然存在。

我尝试将我的文件夹,我的图片和我的脚本的权限设置为0777,但它没有帮助。

我对发生的事情感到很困惑。

你们有什么想法吗?

2 个答案:

答案 0 :(得分:3)

我建议你使用absulte文件路径。如果你想要删除一个在被调用脚本的同一目录中的文件,应该使用poleteaw应答(除了缺少/在路径中):

unlink(__DIR__ . '/' . $filename);

然而,看一下php的目录函数realpath()predefined constants

那么如果你想删除一个不在你目录中的文件怎么办:

  1. 您可以使用realpath()方法从相对路径生成绝对路径。所以realpath(&#39; / one / two / three /../..')导致&#39; / one&#39; - 或者对于您的情况,您可以执行realpath(__DIR__ . '/../../')之类的操作来进入项目的根目录。
  2. 推荐的方法是使用一个变量,该变量包含要存储和管理文件的目录的绝对路径,如$filesDir = '/path/to/my/files'。使用这种方法,您有两个胜利:您的用户文件不会驻留在您的php项目文件中,您可以更好地了解上载/管理哪些文件。

答案 1 :(得分:1)

您不应该使用相对路径来存档。如果它与PHP脚本位于同一文件夹中,请使用unlink(__DIR__ . '/' . $filename);。在其他情况下,设置unlink的完整路径。