在Linux服务器上使用php上传文件无效
收藏

我想做一个网站,我可以上传文件到我的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
    	
    	
    	$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用户和组。
我不知道该怎么做。
我认为这是我必须在linux中改变的,因为在搜索过程中它会说The upload was succesfull,所以我不认为php或html是问题所在。。。
非常感谢你的帮助。


最佳答案:

我试过你的代码,发现了两个缺陷:
参数1应该有tmp_名称,而不是像这样的名称:move_uploaded_file($_FILES["FileToUpload"]["tmp_name"], $file)代替move_uploaded_file($_FILES["FileToUpload"]["name"], $file)
位置应该是绝对的,所以应该是$directory = "/var/www/html/upload/";而不是$directory = "var/www/html/upload/";
代码会起作用的。至少在我身上有用。

公众号