通过php / html格式将file upload到nginx服务器

我认为这是非常受欢迎的问题,但是我找不到我感兴趣的信息,希望你能帮助我。 我新的服务器pipe理的东西,所以不要扔石头在我:)我安装nginx到我的debian虚拟服务器,并已经安装了PHP,MySQL和所有我需要的。 但是,当我开始使用我的PHP脚本,我发现我不能通过HTML格式上传文件

我做了一些testing页,我看到,提交表单后,我可以看到$ _FILES ['tmp_name'],但PHP函数move_uploaded_file不起作用。 它不移动文件。

所以这就是为什么我开始使用Googlesearch,并find很多有关nginx_upload模块等信息。 configurationnginx上传文件是否可行?或者我必须安装nginx_upload模块才能这样做?

我必须做什么允许上传文件到我的nginx服务器。 谢谢。

由于$_FILES['fieldname']['errors']包含0(这是UPLOAD_ERR_OK ),所以实际上传成功。 什么是失败的尝试将临时文件移动到您指定的位置,这就是为什么move_uploaded_file()返回false。 你正在做这样的事情:

 move_uploaded_file($_FILES['fieldname']['tmp_name'], '/srv/www/uploads') 

最可能的问题是,PHP对您指定的目录没有写权限作为第二个参数。 找出用户运行的PHP(可能类似于www-data ),并确保该用户具有写入权限:

 chown -R www-data /srv/www/uploads chmod -R u=rwX,g=rwX,o=rX /srv/www/uploads 

有需要处理进度条的特殊模块,通过nginx。 如果不需要渐进式更新function,没有什么特别的要求。

您很可能需要创build具有不同权限的专用上传目录。 在大多数情况下,chmod 1770 / path / to / upload_dir将会执行。

官方文档可能会避免推荐一种方式,因为允许上传到PHP正在读取文件执行的相同服务器的安全性相当严重。 如果他们推荐一种方式,结果变得脆弱,他们可能会感到负责。

一旦你有它的工作,请testing并validation您不能上传.php文件,然后通过一个简单的URL调用它。