0

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

2 回答 2

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 查看参数化查询。

于 2012-04-04T11:00:22.630 回答
-1

路径必须是绝对路径,例如 /var/www/file/to/delete.pdf 您必须非常小心用户输入!!!

于 2012-04-04T10:56:05.130 回答