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 に答える