取消链接文件路径错误

时间:2012-04-04 10:52:08

标签: php mysql sql

我需要通过用户输入删除文件的路径出现问题。我基本上让它在本地主机上工作但不在我的实时服务器上(使用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);
}

2 个答案:

答案 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 你必须非常小心用户输入!