PHP Unlink无法工作

11

我正在尝试使用unlink在PHP中删除照片。我以前在其他服务器上使用过它,但这次不起作用。我已经为测试使用了绝对路径,但仍然不起作用:

我使用的代码如下: unlink('img1.jpg');

unlink('http://www.mysite.com/img1.jpg');

请问有没有类似的经历?


3
您无法使用 URL 删除文件。您是否尝试使用完整的文件系统路径,例如 /var/www/mysite.com/img1.jpg - Maerlyn
有错误吗?也许您没有删除此文件的权限,或文件位于服务器上的其他位置。使用http://...地址的unlink将不起作用,您必须使用服务器路径。 - Jojo
我已经使用了:unlink('img1.jpg'); 但是没有起作用。 - Sunil
将此代码 http://www.mysite.com/img1.jpg 粘贴到浏览器中并检查图像是否显示,如果没有显示,则路径错误。 - Moeed Farooqui
我确定我没有语法错误,因为我之前在一个网站上使用过它,而且运行良好。是否有任何服务器问题? - Sunil
我现在遇到了同样的问题。使用绝对路径(例如/home/test/someFile.txt)取消链接或重命名以及文件权限为777都没有起作用。我只是在unlink/rename之前添加了chmod($fileName, 777);这一行,然后它就起作用了。我不知道为什么,即使我的文件浏览器告诉我权限是777,它们似乎也不是777。 - Ello
8个回答

7

ulink函数不允许使用URL

请使用这个:

最好且更加安全的方式是使用绝对路径。但您可以动态获取此路径。

例如,使用:

getcwd();

根据您的PHP脚本所在位置,您的变量可能如下所示:
$deleteImage =  getcwd() . 'img1.jpg';

unlink($deleteImage);

请检查这个

bool unlink ( string $filename [, resource $context ] )

and

文件名
文件路径。

因此,它只接受字符串形式的文件名。

请确保文件在您执行脚本的位置可通过路径访问。这对于绝对路径不是问题,但使用相对路径可能会造成问题。


1
是的,使用getcwd()函数可以工作,但我不知道为什么使用绝对路径就不行。无论如何,感谢Patel。 敬礼, Sunil - Sunil

3

2

unlink($fileName); 对我来说失败了。
然后我尝试使用realpath($fileName)函数,如下unlink(realpath($fileName));它起作用了。

只是为了发布,以防有人发现它有用。

php unlink


1
公平警告!realpath()只需路径,例如“/ windows / system32”,而不是“/ windows / system32 / temp.jpg”。因此,我使用了类似于unlink(realpath($tempLoc)。“/”。“$fileName”);的东西。 - shahroz butt

2
如果你在linux或unix中使用unlink函数,你应该检查is_writable ( string $filename )的结果。如果函数返回false,你应该使用fileperms ( string $filename )检查文件权限。
文件权限通常是网站空间的问题,例如,如果你使用ftp用户上传文件,而web服务器以不同的用户身份运行。
如果这是问题所在,你需要执行以下操作:

chmod o+rwd img1.jpg

或者

chmod 777 img1.jpg

为其他用户授予写入(和删除)权限。

1
使用文件系统路径,首先像这样定义路径:

use filesystem path,

define("WEB_ROOT",substr(dirname(__FILE__),0,strlen(dirname(__FILE__))-3));

检查文件是否存在,如果存在则删除该文件。

$filename=WEB_ROOT."img1.jpg";
if(file_exists($filename))
{
$img=unlink(WEB_ROOT."img1.jpg");
}

0

你正在使用URL而不是路径,这是正确的做法... 我假设你正在将图片上传到public_html。我建议你为图片创建一个文件夹。

unlink("public_html/img1.jpg");

0

在编写脚本的文件中,给出相对路径,从存放图像的文件夹到目标文件。 如果文件结构如下:

-your php file
-images
  -1.jpg

then 

unlink(images/1.jpg);

或许是文件夹权限问题。你的文件在服务器上还是在本地运行?如果在服务器上,请给图片文件夹赋予755权限。


0

unlink('http://www.mysite.com/img1.jpg');无法正常工作。

请使用以下代码代替: unlink($_SERVER['DOCUMENT_ROOT'].'img1.jpg');//获取当前目录 或者,

unlink($_SERVER['DOCUMENT_ROOT'].'dir_name/img1.jpg');

可能存在文件权限问题,请检查。


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