我的Nginx服务器有问题。我安装了一台新服务器,并认为我安装了与旧服务器相同的服务器。然而,从那时起,我无法将文件上传到静态页面。我在index.php中有一个上传函数。当我显式调用index.php时,它仍然有效,但当我只调用/时,它会给我一个405错误。
我在互联网上看到过很多讨论,都归结为nginx不允许对静态文件进行POST请求。然而,我的安装接受对静态文件的POST请求,但不接受文件上载。澄清一下,这是我目前的情况:
+----------------------+-------------+------------------+
| | Common POST | With file upload |
+----------------------+-------------+------------------+
| Request to / | Allowed | Allowed |
| Request to index.php | Allowed | 405 Not Allowed |
+----------------------+-------------+------------------+
它可能没有添加任何内容,但为了完整起见:我也在这台服务器上运行一个WordPress站点,自从迁移服务器后,我就无法上传新媒体。
日志文件(
/var/log/nginx/error.log
,
/var/log/php5-fpm.log
,
/var/log/syslog
)不要提供任何信息。后来,我还为FastCGI池启用了日志记录,在访问日志中,没有对静态页面的POST请求的记录。所以nginx必须在它们到达FastCGI之前阻止它们。
相关的PHP ini设置:
enable_post_data_reading On
file_uploads On
max_file_uploads 20
upload_max_filesize 20M
upload_tmp_dir no value
我怎样才能让它再次工作?
其他信息
我的旧服务器和新服务器之间存在一些差异(可能更多,但我不知道):
-
在nginx之前,我必须使用
fastcgi_pass 127.0.0.1:9000;
-现在,这已经行不通了,但我正在使用
fastcgi_pass unix:/var/run/php5-fpm.sock;
.我不确定这是为什么或是否重要
-
我从源代码构建nginx。以下是不同的安装,首先是旧的:
$ nginx -V
nginx version: nginx/1.4.6 (Ubuntu)
built by gcc 4.8.2 (Ubuntu 4.8.2-16ubuntu6)
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_spdy_module --with-http_sub_module --with-http_xslt_module --with-mail --with-mail_ssl_module --add-module=/build/buildd/nginx-1.4.6/debian/modules/nginx-auth-pam --add-module=/build/buildd/nginx-1.4.6/debian/modules/nginx-dav-ext-module --add-module=/build/buildd/nginx-1.4.6/debian/modules/nginx-echo --add-module=/build/buildd/nginx-1.4.6/debian/modules/nginx-upstream-fair --add-module=/build/buildd/nginx-1.4.6/debian/modules/ngx_http_substitutions_filter_module
还有新的:
$ nginx -V
nginx version: nginx/1.6.0
built by gcc 4.8.2 (Ubuntu 4.8.2-19ubuntu1)
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro' --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_spdy_module --with-http_sub_module --with-http_xslt_module --with-mail --with-mail_ssl_module --add-module=/home/camilstaps/nginx-modules/nginx-auth-pam --add-module=/home/camilstaps/nginx-modules/nginx-dav-ext-module --add-module=/home/camilstaps/nginx-modules/ngx_http_substitutions_filter_module --with-http_mp4_module --with-http_flv_module
-
旧PHP版本:
$ php5 -v
PHP 5.5.9-1ubuntu4.3 (cli) (built: Jul 7 2014 16:36:58)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
还有新的:
$ php5 -v
PHP 5.5.9-1ubuntu4.3 (cli) (built: Jul 7 2014 16:36:58)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
最后,我仍然可以访问我的旧设备。因此,如果您想查看某个文件的内容或某个命令的输出,这是可能的。