首页 > 编程知识 正文

nginx访问php提示an(nginx运行php)

时间:2023-12-08 14:00:33 阅读:313422 作者:TKQB

本文目录一览:

  • 1、我的freebsd系统下Nginx PHP提示出现The page you are looking for is temporarily unavailable错误?
  • 2、nginx PHP文件不能正常访问.
  • 3、安装nginx+php后,Php页面访问时提示404,但页面是存在的是怎么回事?
  • 4、nginx 反向代理后为什么访问php文件 会提示404
  • 5、linux nginx 网站访问提示502 Bad Gateway怎么操作?

我的freebsd系统下Nginx PHP提示出现The page you are looking for is temporarily unavailable错误?

1.先检查PHP FastCGI进程数是否够用:

netstat -anpo|grep “php-cgi”|wc -l

如果输出为0的话,则表示FastCGI 进程数够大,

2.此时则修改scgi_params文件,找到:

scgi_param SCGI 1;

把它改为:

scgi_param SCGI 5;

3.PHP程序如果的执行时间超过了Nginx的等待时间,就可适当地增加nginx.conf配置文件中FastCGI的timeout时间,例如:

http

{

……

fastcgi_connect_timeout 300;

fastcgi_send_timeout 300;

fastcgi_read_timeout 300;

fastcgi_buffer_size 64k

fastcgi_buffers 4 64k

……

}

4.重启FastCGI

先杀掉进程:# pkill -9 php-cgi

然后重启:# /usr/local/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www -g www -f /usr/local/bin/php-cgi

5.重启Nginx

先杀掉进程:# killall -9 nginx

然后重启:# /usr/local/sbin/nginx

其它可能情况:

1)访问任意PHP文件,出现

The page you are looking for is temporarily unavailable.

Please try again later.

2)访问html页面,正常

原因:

nginx不能正常通过FastCGI结果访问PHP

1)如果是以tcp socket形式,可能是进程用户权限设置得不对

spawn-fcgi -a 127.0.0.1 -p 9000 -C 2 -u www-data -g www-data -f /usr/bin/php-cgi

可以改为 www-data 或者 nobody, 重启php-cgi进程

2)如果是unix socket,可能 socket文件权限没有写入能力

srwxrwxr-x 1 gavin gavin 0 11-12 10:18 php-fcgi.sock

为其他用户添加写入能力

chmod o+w php-fcgi.sock

nginx PHP文件不能正常访问.

       一般nginx默认配置中会是这个样子的。这里有一个SCRIPT_FILENAME变量,但是fastcgi_params这个文件中是不包含该变量的,改变量的定义实际上是在fastcgi.conf文件中。

      实际上可以把配置修改成如下的配置。

location ~ .php$ {

    root /usr/share/nginx/html;

    fastcgi_pass   127.0.0.1:9000;

    fastcgi_index  index.php;

    fastcgi_intercept_errors on;

    include fast_cgi.conf;

    

    #可以增加rewrite,也可以不增加。

}

      按如上的配置,如果访问127.0.0.1:9000/a.php,则实际上根据root指令和fast_cgi.conf配置,nginx会通过fast_pass指令访问/usr/share/nginx/html/a.php这个文件。

      记得用root指令,指定站点的文档根路径。

安装nginx+php后,Php页面访问时提示404,但页面是存在的是怎么回事?

安装nginx+php后,Php页面访问时提示404,但页面是存在的,应该是下面的原因造成的:

这个是因为index.html 文件目录是nginx默认安装目录 /usr/local/nginx/html,而info.php 把它放到了 /data/web 下造成的,可以在nginx.conf配置文档里面找到相应的问题。

可以按照下面测试更改:

location ~ .php$ {

root           /data/web;

fastcgi_pass   127.0.0.1:9000;

fastcgi_index  index.php;

fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

include        fastcgi_params;

}

nginx -t nginx -s reload

nginx+php的运行原理:

nginx的worker进程直接管理每一个请求到nginx的网络请求。

对于php而言,由于在整个网络请求的过程中php是一个cgi程序的角色,所以采用名为php-fpm的进程管理程序来对这些被请求的php程序进行管理。php-fpm程序也如同nginx一样,需要监听端口,并且有master和worker进程。worker进程直接管理每一个php进程。

关于fastcgi:fastcgi是一种进程管理器,管理cgi进程。市面上有多种实现了fastcgi功能的进程管理器,php-fpm就是其中的一种。php-fpm作为一种fast-cgi进程管理服务,会监听端口,一般默认监听9000端口,并且是监听本机,也就是只接收来自本机的端口请求,所以通常输入命令netstat -nlpt|grep php-fpm 会得到:

tcp       0      0 127.0.0.1:9000            0.0.0.0:*             LISTEN      1057/php-fpm

这里的127.0.0.1:9000 就是监听本机9000端口的意思。

关于fastcgi的配置文件,fastcgi的配置文件一般放在nginx.conf同级目录下,配置文件形式,一般有两种:fastcgi.conf  和 fastcgi_params。不同的nginx版本会有不同的配置文件,这两个配置文件有一个非常重要的区别:fastcgi_parames文件中缺少下列配置:

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

可以打开fastcgi_parames文件加上上述行,也可以在要使用配置的地方动态添加,使该配置生效。

当需要处理php请求时,nginx的worker进程会将请求移交给php-fpm的worker进程进行处理,也就是最开头所说的nginx调用了php,其实严格得讲是nginx间接调用php。

nginx 反向代理后为什么访问php文件 会提示404

在Nginx的配置文件vhost.conf中,加入以下代码实现rewrite。

若开启所有规则.则添加如下代码:

if ($request_filename !~* (.*).(css|js|gif|jpg|png|xml))

{

# 修改以下语句中的 /HDwiki 为你的HDwiki目录地址,如果程序放在根目录中,请将 /HDwiki 修改为 /

rewrite ^(/HDwiki)/(.*)$ $1/index.php?$2;

}

linux nginx 网站访问提示502 Bad Gateway怎么操作?

1、FastCGI进程是否已经启动

ps aux | grep php

查看是否启动了php-fpm服务;

2、FastCGI worker进程数是否不够

运行linux命令:

netstat -anpo | grep “php-cgi” | wc -l

判断是否接近FastCGI进程,接近配置文件中设置的数值,表明worker进程数设置太少;

3、FastCGI执行时间过长

根据实际情况调高以下参数值

fastcgi_connect_timeout 300;

fastcgi_send_timeout 300;

fastcgi_read_timeout 300;

4、FastCGI Buffer不够

nginx和apache一样,有前端缓冲限制,可以调整缓冲参数

fastcgi_buffer_size 32k;

fastcgi_buffers 8 32k;

5、其它原因

出现502的情况太多了,(例如:你服务器目前的配置支撑不了你现有的业务。我有一个朋友服务器是4核8G的,经常一会出现502 Bad Gatewa,又一会正常。CPU和内存经常爆满接近100%,负载也接近4。最后,配置升级成8核16G后变就变正常了。)远远不只是博主所说的这几种!这几种只能说是最常用的吧!具体的原因一定要去查看服务器的日志;

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。