我正在尝试使用unlink(
)函数从服务器删除文件。
$photo_to_delete = 'http://www.example.com/images/uploads/properties/197/IMG_0002.jpg';
unlink($photo_to_delete);
下面是我得到的错误信息:
警告:unlink() [function.]:无法定位流包装器在/nfs/c09/h01/mnt/137110/域www.example.com/html/listers/edit_photos.php第43行
第43行是unlink()函数所在的地方。
为什么我在php中使用unlink()时得到"无法找到流包装器"消息?
我很确定你不能像那样远程删除文件。尝试使用相对路径。或者甚至是绝对路径(减去http://domain.com
部分)。
换句话说:
unlink('/images/uploads/properties/197/IMG_0002.jpg'); // relative path
unlink('/var/www/html/images/uploads/properties/197/IMG_0002.jpg'); // absolute
或者更好的是,如果你要使用一个绝对路径,试着用$_SERVER['DOCUMENT_ROOT']
作为前缀。
unlink($_SERVER['DOCUMENT_ROOT'] . '/images/uploads/properties/197/IMG_0002.jpg');
不能通过HTTP协议删除内容,句号。
详见http://php.net/manual/en/wrappers.http.php。
好的,unlink()
实际上与php的流包装器API接口,但大多数包装器不实现该方法。
HTTP有一个DELETE
方法。但您的服务器不太可能实现了这一点。(虽然可以设置一个简单的Script DELETE /delete.php
。显然,未经授权是不明智的!)
然后,您需要curl
或http
扩展(甚至fsockopen
)来实际为此发送适当的请求。
如果您想要删除服务器上的文件(php脚本运行的地方),请使用mmmshuddup所说的相对或绝对路径。如果文件位于其他地方,您应该使用某种网络协议进行文件管理,例如FTP…如果这是你的用例,你可以看看这里:http://php.net/manual/en/function.ftp-delete.php