Загрузка файлов с помощью php на сервер linux не работает - PullRequest
0 голосов
/ 24 февраля 2019

Я хочу создать веб-сайт, на котором я могу загружать файлы в определенный каталог на моем сервере Linux.

HTML:

    <body>

    <form action="index.php" method="post" enctype="multipart/form-data">
    	<p>File: </p>
    	<input type="hidden" name="MAX_FILE_SIZE" value="2000000000000000">
    	
    	<input type="file" name="FileToUpload" id="FileToUpload"> <br> <br>
    	<input type="submit" value="Hochladen" name="submit">
    </form>
    </body>

PHP:

    <?php
    	
    	
    	$directory = "var/www/html/upload/";
    	$file = $directory . basename($_FILES["FileToUpload"]["name"]);
  
    	if(move_uploaded_file($_FILES["FileToUpload"]["name"], $file)){
    		echo "File was succesfully uploaded!";
    	}
    	else{
    		echo "ERROR";
    	}
    	print_r(error_get_last());

        print_r($_FILES);

    ?>

Php.ini:

file_uploads = On

upload_tmp_dir= "/var/www/html/upload/files/"

upload_max_filesize = 2048M

max_file_uploads = 20

вывод:

Array ( [FileToUpload] => Array ( [name] => Meme.jpg [type] => image/jpeg [tmp_name] => /var/www/html/upload/files/phpiQizaE [error] => 0 [size] => 91487 ) )

Папка для загруженного изображения имеет разрешения 777и www-data пользователь и группа.
Image showing Folder Permission

Я не знаю, как заставить это работать.
Я думаю, что это то, что я должен изменить в Linux, потому что в серединепоиск там говорит The upload was succesfull, так что я не думаю, что php или html - это проблема ...

Действительно ценю любую помощь.

Ответы [ 2 ]

0 голосов
/ 24 февраля 2019

Я попробовал ваш код и нашел 2 недостатка:

  1. Параметр 1 должен иметь имя tmp_name вместо имени, например: move_uploaded_file($_FILES["FileToUpload"]["tmp_name"], $file) вместо move_uploaded_file($_FILES["FileToUpload"]["name"], $file)

  2. Местоположение должно быть абсолютным, поэтому оно должно быть $directory = "/var/www/html/upload/"; вместо $directory = "var/www/html/upload/";

Код будет работать.По крайней мере, у меня это сработало.

0 голосов
/ 24 февраля 2019

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

if(move_uploaded_file($_FILES["FileToUpload"]["tmp_name"], $file)){
    echo "File was succesfully uploaded!";
}
...