2012-04-04 3 views
0

은 사용자 입력을 통해 삭제해야하는 파일 경로에 문제가 있습니다. 기본적으로 로컬 호스트에서 작동하지만 라이브 서버에서는 작동하지 않습니다 (링크 해제 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

에 정확한 오류 메시지가 포함되어 있습니다. – AD7six

+0

파일 권한을 확인하면 문제가 발생했을 수 있습니다 !!! – Sumant

+0

아이디어를 주셔서 감사합니다. – ChrisSherwood

답변

-1

경로는 절대적이어야합니다. 예 : /var/www/file/to/delete.pdf 사용자 입력에 매우 신중해야합니다! 당신이 URI 경로를 사용하여 파일을 해제 할 때

+2

아니요, 절대적 일 필요는 없습니다. – slash197

0

, 당신은이 경고가 나타납니다

unlink() [function.unlink]: HTTP does not allow unlinking 

그것은 여전히 ​​작동합니다, 그리고 당신은 @를 사용하여 경고를 억제 할 수 있지만, 나는 그것을 추천하지 않을 것입니다.

./uploaded_files/somefile.jpg 

또는

/var/www/mysite/uploaded_files/somefile.jpg 

대부분의 경우, 그래도 문제가 폴더 권한입니다 : 같은

대신, 당신은 문서 상대 경로 또는 루트 상대 경로를 사용해야합니다. PHP는 아마 해당 폴더에 대한 읽기 권한 만 갖고 있습니다. $ _POST에서 값을 복용하고 바로 쿼리에 입력, 다른 의견에서 언급 한 바와 같이

은 SQL 주입에 대한 당신이 활짝 열려 단풍. 대신 PDO를 사용하여 매개 변수화 된 쿼리를 조사해야합니다.