我需要通过用户输入删除文件的路径出现问题。我基本上让它在本地主机上工作但不在我的实时服务器上(使用unlink php方法)。它现在收到一个错误,说它因为我认为的路径而无法删除文件。
我的问题是这条道路应该是“creativetree.co/creativetreeBeta/uploaded_files/imgfile.jpg”
是否需要插入才能使路径生效?下面是我的一些代码(更多,但这是最相关的)。
if(isset($_POST["filetodelete"])){
$deletefileid = $_POST['filetodelete'];
$projid = $_POST['projid'];
$get_files_to_unlink = "SELECT * FROM files WHERE files_id = $deletefileid";
$get_unlink_result=mysql_query($get_files_to_unlink);
while($row=mysql_fetch_assoc($get_unlink_result)){
$filetounlink = $row['fileurl'];//uploaded_files/imgname.jpg
}
//url problem here worked on localhost not when live
unlink($filetounlink);
$sql_remove_file="DELETE FROM files WHERE files_id = $deletefileid";
$result_file=mysql_query($sql_remove_file);
}
答案 0 :(得分:0)
当您尝试使用URI路径取消链接文件时,您将收到以下警告:
unlink() [function.unlink]: HTTP does not allow unlinking
它应该仍然可以使用,您可以使用@
来禁止警告,但我不推荐它。
相反,您需要使用文档相对路径或根相对路径,例如:
./uploaded_files/somefile.jpg
或
/var/www/mysite/uploaded_files/somefile.jpg
但最有可能的问题是文件夹权限。 PHP可能只对该文件夹具有读取权限。
正如其他评论中所提到的,从$ _POST获取值并直接进入您的查询会让您对SQL注入大开。您应该使用PDO来查看参数化查询。
答案 1 :(得分:-1)
路径必须是绝对的,例如/var/www/file/to/delete.pdf 你必须非常小心用户输入!