如何使用 PHP 和 Nginx 进行文件上传?

问题描述

我正在尝试使用 PHP 7.3 FPM 和 Nginx 上传文件,但它不起作用。奇怪的是,在我的本地主机上这是有效的(只要我更改文件上传路径之类的东西)。我的 PHPinfo()文件上传已开启。我的 index.PHP

<html>
<body>
<form action = "upload.PHP" method="POST" enctype="mutipart/form-data">
<input type="file" name="file">
<button type="submit" name="submit">Upload</button>
</body>
</html>

它所在的目录是/var/www/html/然后我的上传目录是/var/www/html/uploads/我的upload.PHP

<?PHP
if (isset($_POST["submit"]))  {
    $file = $_FILES["file"];
    $fileName = $_FILES["file"]["name"];
    $upload_folder = "/var/www/html/uploads/";
    move_uploaded_file($_FILES["file"]["tmp_name"],$upload_folder.$_FILES["file"]["name"]);
}

当我输入 echo print_r($file) 时,它返回 1。知道出了什么问题吗?

解决方法

我相信您正在将文件直接上传到您的网络文件夹下的“上传”文件夹。

  1. 确保已在服务器中创建了上传文件夹
  2. 确保uploads文件夹是允许写的(php上传的文件归www-data组所有)
  3. 请使用相对路径(在托管环境中绝对路径可能被禁止(或与您的本地主机路径完全不同))。因此改变
$upload_folder = "/var/www/html/uploads/";

$upload_folder = "./uploads/";