2012-04-04 3 views
0

возникла проблема с путём к файлу, который мне нужно удалить с помощью пользовательского ввода. В основном я работал над локальным хостом, но не на моем реальном сервере (с помощью метода unlink php). Его получение ошибки теперь говорит, что он не может удалить файл из-за пути, который я думаю.Ошибка удаления файла Unlink

Мой вопрос это должно путь быть «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 Вы должны быть очень осторожны с пользовательским вводом !!!

+2

Нет, это не обязательно должно быть абсолютным. – slash197

0

При попытке разъединить файл, используя путь URI, вы получите это предупреждение:

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

Он должен еще работать, и вы можете подавить предупреждение с помощью @ но я бы не рекомендовал его.

Вместо этого необходимо использовать относительный путь к документу или корневой относительный путь, такой как:

./uploaded_files/somefile.jpg 

или

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

Скорее всего, хотя, проблема с разрешениями папки. Возможно, PHP имеет права на чтение для этой папки.

Как уже упоминалось в других комментариях, использование значений из $ _POST и вход прямо в ваш запрос оставляет вас открытым для SQL Injection. Вы должны искать в параметризованных запросах, используя PDO.

Смежные вопросы