简单 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。
现在一切都会好起来的。
我是 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。 现在一切都会好起来的。