2013-07-20 3 views
0

Я пишу php для загрузки файла и сканирования каталога, чтобы показать их как ссылки, работа по проверке работает хорошо. Я могу видеть текстовые файлы, созданные мной в каталоге, но я просто не могу двигаться локальный файл в нужный каталог. После выполнения файла появляется файл.сбой при загрузке php с файлом move_upload_file()

Я думаю, что проблема может содержать в этой строке:

move_uploaded_file($_FILES["file"]["tmp_name"],"/var/www/BlueTapeLogin/upload".$_FILES["file"]["name"]); 

То, что я действительно хочу, чтобы загрузить изображение в директорию в/вар/WWW/BlueTapeLogin/загрузить и мой файл PHP живет в/var/www/BlueTapeLogin/upload_image.php Как я могу изменить код, чтобы все работало? Заранее спасибо.

Пожалуйста, смотрите мой полный код:

<html> 
<head> 
<?php 
try 
    { 

if (!empty($_POST["delete"])){ 
$delete=$_POST["delete"]; 
echo"we have the command delete this file:"; 
echo $delete; 
$file = "upload/".$delete; 
echo "/n***************"; 
echo "you want delete :"; 
echo $file; 
echo "***************"; 
if (!unlink($file)) 
    { 
    echo ("Error deleting $file"); 
    } 
else 
    { 
    echo ("Deleted $file"); 


    } 

}else{} 
}catch(Exception $e) 
    { 
    echo 'Message: ' .$e->getMessage(); 
    } 

?> 
<?php 
move_uploaded_file($_FILES["file"]["tmp_name"],"/var/www/BlueTapeLogin/upload".$_FILES["file"]["name"]); 
?> 

<?php 
$dir=scandir("/var/www/BlueTapeLogin/upload") ; 
for($j=0;$j<count($dir);$j++){ 
     echo $dir[$j]; 
     echo"\n"; 
     $target = $dir[$j]; // This is the file that already exists 
     $link = $dir[$j]; // This the filename that you want to link it to 
     echo "<a href=upload/".$link.">".$link."</a>"; 
} 

?> 
</head> 
<body> 
<form action="upload_image.php" method="post" 
enctype="multipart/form-data"> 
<label for="file">Filename:</label> 
<input type="file" name="file" id="file"><br> 
<input type="submit" name="submit" value="Submit"><br> 


<label for="file">Delete</label> 
<input type="text" name="delete" id="delete"><br> 
<input type="submit" name="submit" value="Submit"> 



</form> 
<a href="http://localhost/front2.php">logout</a> 
</body> 
</html> 
+1

Имеет ли пользователь веб-сервера разрешение на запись в эту папку? Что делать, если пользователь отправляет файл с именем '_image.php' - он перезапишет скрипт. – Barmar

+0

Какое ваше сообщение? – bansi

ответ

0

Вы недостающую каталога разделитель между upload и имя файла, он должен быть:

move_uploaded_file($_FILES["file"]["tmp_name"],"/var/www/BlueTapeLogin/upload/".$_FILES["file"]["name"]); 

Разрешения, показывают, что только корень может пишите в этот каталог, но веб-сервер, вероятно, использует userid, например, www-user. Вам необходимо изменить права собственности на каталог на веб-сервер userid. Это должно быть сделано администратором сервера.

Скорее всего, есть еще один каталог, на который веб-сервер уже разрешен для записи. Администратор сервера должен сообщить вам, какой каталог использовать.

+0

Я только что попробовал это, но он все равно дает мне тот же результат. – user2514364

+0

Имеет ли веб-сервер разрешение на запись в каталог 'upload'? – Barmar

+0

Я об этом не думал. Как это проверить? – user2514364

0

Проверьте разрешение пользователя на загрузку в этом каталоге и попробуйте сделать его простым. Просто загрузите файл в другой каталог, увидев, что он работает, или нет, чем проверяйте свой код на один шаг.

Проверить возвращаемые значения проверки выдается предупреждение ли

Возвращаемые значения

Возвращает TRUE в случае успеха.

Если имя файла не является допустимым файлом загрузки, никаких действий не будет, и move_uploaded_file() вернет FALSE.

Если имя файла является допустимым файлом загрузки, но по какой-либо причине его нельзя перемещать, никаких действий не будет, и move_uploaded_file() вернет FALSE. Кроме того, выдается предупреждение.

+0

Я изменил каталог как/var/www, который все еще не удалось загрузить. – user2514364

+0

@ user2514364 проверить значения возврата –

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