注:(nginx本身不能处理PHP,它只是个web服务器,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给客户端。
nginx一般是把请求发fastcgi管理进程处理,fascgi管理进程选择cgi子进程处理结果并返回被nginx
PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中。必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。)
测试服务器相关目录:
root目录: /var/www/html info.php
php.ini php-fpm 目录:
/etc/php/7.0/fpm
/etc/php/7.0/fpm/pool.d 下的 www.conf
php-fpm进程:
/run/php/php7.0-fpm.pid
问题1:404错误
2017/06/12 11:20:10 [alert] 63567#63567: 768 worker_connections are not enough
2017/06/12 11:20:10 [error] 63567#63567: *2296 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 127.0.0.1, server: www.hsx.com, request: "GET /info.php HTTP/1.0", upstream: "http://127.0.0.1:80/info.php", host: "127.0.0.1"
2017/06/12 11:20:10 [error] 63567#63567: *2296 open() "/usr/share/nginx/html/50x.html" failed (2: No such file or directory), client: 127.0.0.1, server: www.hsx.com, request: "GET /info.php HTTP/1.0", upstream: "http://127.0.0.1:80/info.php", host: "127.0.0.1"
原因未配置hosts文件
问题2: nginx不解析php文件:
2017/06/12 13:50:35 [error] 65057#65057: *18 connect() failed (111: Connection refused) while connecting to upstream, client: 127.0.0.1, server: localhost, request: "GET /hxs.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "localhost"
解决给www.conf(php-fpm)中的
listen = /run/php/php7.0-fpm.sock 后添加 listen = 9000
然后重启php-fpm /etc/init.d/php/php-fpm.conf restart
问题3: No input file specified. 修改nginx.conf配置
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
参考文章:
https://myjeeva.com/php-fpm-configuration-101.html
http://niutuku.com/tech/php/273616.shtml