【问题标题】:How to make file uploading work with PHP and Nginx?如何使用 PHP 和 Nginx 进行文件上传?
【发布时间】:2021-07-11 15:58:33
【问题描述】:

我正在尝试使用 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。知道出了什么问题吗?

【问题讨论】:

    标签: php nginx file-upload fpm php-7.3


    【解决方案1】:

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

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

    $upload_folder = "./uploads/";
    

    【讨论】:

    • 谢谢。我忘了提到我确实为我的上传目录启用了权限。似乎更改 $upload_folder 值并没有做任何事情。还有其他想法吗?
    • 您尝试上传的文件有多大(大小)?确保写入权限适用于网络用户说 www-data 。你可能会看到this
    • 文件非常小,我使用的主要文件为 103 KB。至于 www-data 评论,我将如何在这个用例中应用它?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-25
    • 2017-05-15
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 2013-10-09
    • 2018-10-28
    相关资源
    最近更新 更多