PHP unlink错误 - 路径错误

3

我使用与其他人相同的语法,但是......我无法使其工作。

我尝试了很多选项来取消链接目录中的文件。

概要: delete.php(执行操作的文件)位于主文件夹中。 要删除的文件(图像)位于子目录“upload”下。

$file = $name . '.' . $ext; 

$tmpfile = 'upload/'. $file; 
unlink($tmpfile);

比这个也好。
if (!unlink("upload/$file")) {
    echo "Error deleting ... $file  ... from directory";
}
else {
    echo "Deleted $file";
}

还有许多其他问题。以下是错误日志:

unlink(upload/Glauber_3232_MAGNOLIA_ST__016.jpg) [function.unlink]: No such file or directory in /home2/braaasil/public_html/openhouse/delete.php on line 30

因此,我无法从主目录(其中包含delete.php)转到子目录“upload”,这是我的图像所在的地方。如有建议,请告知。

编辑

public_html

   openhouse (sub domain)

      delete.php (this is a file)

      upload (this is sub folder)

如果不清楚的话,我可以拍照。delete.php和子文件夹upload位于同一级别,都是openhouse的子文件夹。希望这样清楚易懂。

您确定文件 /home2/braaasil/public_html/openhouse/upload/Glauber_3232_MAGNOLIA_ST__016.jpg 存在吗?请注意,文件名区分大小写。 - Alex
你尝试过使用"../upload/$file"吗? - Bart Friederichs
1
不是说这是你的问题,但你应该始终使用基于当前目录的相对路径:__DIR__ . '/upload/' . $file。因为有时候当前工作目录并不是你想象中的那样。 - PeeHaa
我尝试使用"../upload/$file"。问题在于它试图在删除.php中查找文件,因为错误消息是../delete.php/my_image_to_be_delete.jpeg。 - user2060451
2个回答

4

您的脚本没有问题,但我认为您提供了错误的应用程序路径,因此它无法在上传文件夹下找到指定的文件。

我认为您正在使用子文件夹,但upload指向根文件夹,因此无法找到文件夹。

请尝试:unlink (__DIR__ . '/upload/' . $file);

如果可以的话,您也可以将其用作:"./upload/$file"


@Imaqtpie,这又错了 - __DIR__ 没有尾随斜杠。 - George Brighton
@GeorgeBrighton 抱歉,它被意外覆盖了。我已经添加了它。 - Aristona
我对PHP不太熟悉,请原谅我的无知。我按照您的脚本使用它,没有做任何更改。但是我又遇到了这个问题:"No such file or directory in /home2/braaasil/public_html/openhouse/delete.php",由于某种原因,我无法找到这个路径:home2/braaasil/public_html/openhouse/upload/(然后是要删除的图片)。 - user2060451
@user2060451 你的结构看起来怎么样?delete.php文件在哪里,上传文件夹在哪里?如果上传文件夹和delete.php在同一个目录下,我的答案就可以有效。编辑:你没有漏掉upload前面的斜杠吧?我已经更新了我的回复,请再试一次。 - Aristona
在执行 if (!unlink ("upload/$file")) 之前,realpath('upload/' . $file); 返回什么? - George Brighton
显示剩余7条评论

0

对不起!由于某些原因,尽管我对所有条目都使用了strtolower命令,但DB开始接受image.jpg和image.JPG。

这个问题中发布的代码正在删除图像。非常感谢您的时间,并再次道歉。

对于其他所有人:请确保DB、文件和搜索都设置为小写,因为DB可能区分大小写。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接