简单 php 图片上传不适用于 nginx(适用于 apache)

Simple php image upload not working on nginx (works on apache)

我是 nginx 新手。这适用于阿帕奇。我使用 vpssim 安装了 nginx、PHP-FPM、Centos6.5 x64。

没有文件。目录为空但脚本显示成功。 "Says Stored in example.jpg"

html

<form enctype="multipart/form-data" method="post" action="upload.php">
<input type="file" name="file" /><br />
<input type="submit" value="Upload File" />
</form>

upload.php

<?php
$allowedExts = array("gif", "jpeg", "jpg", "png");
  $temp = explode(".", $_FILES["file"]["name"]);
  $extension = end($temp);
  if ((($_FILES["file"]["type"] == "image/gif")
  || ($_FILES["file"]["type"] == "image/jpeg")
  || ($_FILES["file"]["type"] == "image/jpg")
  || ($_FILES["file"]["type"] == "image/pjpeg")
  || ($_FILES["file"]["type"] == "image/x-png")
  || ($_FILES["file"]["type"] == "image/png"))
  && ($_FILES["file"]["size"] < 100000)
  && in_array($extension, $allowedExts))
    {
    if ($_FILES["file"]["error"] > 0)
      {
      echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
      }
    else 
      {

        $fileName = $temp[0].".".$temp[1];
        $temp[0] = rand(0, 3000); //Set to random number
        $fileName;

      if (file_exists("" . $_FILES["file"]["name"]))
        {
        echo $_FILES["file"]["name"] . " already exists. ";
        }
      else
        {
        move_uploaded_file($_FILES["file"]["tmp_name"], "" . $_FILES["file"]["name"]);
        echo "Stored in: " . "" . $_FILES["file"]["name"];
        }
      }
    }
  else
    {
    echo "Invalid file";
    }
?>

得到答案。我从这里得到了一些帮助。 https://askubuntu.com/questions/365087/grant-a-user-permissions-on-www-data-owned-var-www

这是组权限问题。我更改了组的权限。

对于正常的 nginx 安装 /home/example.com/public_html 将不起作用。检查你的目录,可能是 /var/www/mysite/

用于 VPSSIM 安装。 VPSSIM 默认创建组 nginx。

如何解决:

检查您的权限

ls -ld /home/example.com/public_html

得到这样的东西

drwxr-xr-x 2 root nginx 4096 Jan 24 21:06 /home/example.com/public_html

现在更改组 nginx 的写入权限

sudo chmod -vR g+w /home/example.com/public_html

检查更改

ls -ld /home/example.com/public_html

drwxrwxr-x 2 root nginx 4096 Jan 24 21:06 /home/example.com/public_html

了解 ls -ld 检查 https://superuser.com/questions/171858/how-do-i-interpret-the-results-of-the-ls-l-command

您可以使用 VPSSIM 中的 修复错误 Chmod、Chown 功能来修复该错误。

VPSSIM 菜单 ==> 工具 - 插件(选项 #16) ==> 修复错误 Chmod,chown(选项 #5) ==> 按 Enter。 现在一切都会好起来的。