连不上 PHP -fpm 还是怎么回事 ? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
station
V2EX    NGINX

连不上 PHP -fpm 还是怎么回事 ?

  •  
  •   station 2020-02-13 19:52:03 +08:00 3632 次点击
    这是一个创建于 2069 天前的主题,其中的信息可能已经有所发展或是发生改变。
    文件权限什么的该检查的我都检查了
    https://s2.ax1x.com/2020/02/13/1LqrVA.png

    tail -f /var/log/nginx/error.log 看上去没错误


    nginx.conf

    user nginx;
    worker_processes 2;

    error_log /var/log/nginx/error.log debug;
    pid /var/run/nginx.pid;


    events {
    worker_connections 1024;
    use epoll;
    }


    http {
    include mime.types;
    default_type application/octet-stream;

    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    '$status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"';

    access_log /var/log/nginx/access.log main;

    sendfile on;
    tcp_nopush on;

    keepalive_timeout 65;

    #gzip on;
    charset utf-8;

    include /etc/nginx/conf.d/*.conf;
    }



    nextcloud.conf

    upstream php-handler {
    server unix:/run/php-fpm/fpm.sock;
    }

    server {
    listen 80;
    server_name localhost;
    # enforce https
    # return 301 https://$server_name:443$request_uri;

    # Use Mozilla's guidelines for SSL/TLS settings
    # https://mozilla.github.io/server-side-tls/ssl-config-generator/
    # NOTE: some settings below might be redundant

    #ssl_certificate /etc/ssl/nginx/cloud.example.com.crt;
    #ssl_certificate_key /etc/ssl/nginx/cloud.example.com.key;

    # Add headers to serve security related headers
    # Before enabling Strict-Transport-Security headers please read into this
    # topic first.
    #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;
    #
    # WARNING: Only add the preload option once you read about
    # the consequences in https://hstspreload.org/. This option
    # will add the domain to a hardcoded list that is shipped
    # in all major browsers and getting removed from this list
    # could take several months.
    add_header Referrer-Policy "no-referrer" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-Download-Options "noopen" always;
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-Permitted-Cross-Domain-Policies "none" always;
    add_header X-Robots-Tag "none" always;
    add_header X-XSS-Protection "1; mode=block" always;

    # Remove X-Powered-By, which is an information leak
    fastcgi_hide_header X-Powered-By;

    # Path to the root of your installation
    root /var/www;

    location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
    }

    # The following 2 rules are only needed for the user_webfinger app.
    # Uncomment it if you're planning to use this app.
    #rewrite ^/.well-known/host-meta /nextcloud/public.php?service=host-meta last;
    #rewrite ^/.well-known/host-meta.json /nextcloud/public.php?service=host-meta-json last;

    # The following rule is only needed for the Social app.
    # Uncomment it if you're planning to use this app.
    #rewrite ^/.well-known/webfinger /nextcloud/public.php?service=webfinger last;

    location = /.well-known/carddav {
    return 301 $scheme://$host:$server_port/nextcloud/remote.php/dav;
    }
    location = /.well-known/caldav {
    return 301 $scheme://$host:$server_port/nextcloud/remote.php/dav;
    }

    location /.well-known/acme-challenge { }

    location ^~ /nextcloud {

    # set max upload size
    client_max_body_size 512M;
    fastcgi_buffers 64 4K;

    # Enable gzip but do not remove ETag headers
    gzip on;
    gzip_vary on;
    gzip_comp_level 4;
    gzip_min_length 256;
    gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
    gzip_types application/atom+xml application/Javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;

    # Uncomment if your server is build with the ngx_pagespeed module
    # This module is currently not supported.
    #pagespeed off;

    location /nextcloud {
    rewrite ^ /nextcloud/index.php;
    }

    location ~ ^\/nextcloud\/(?:build|tests|config|lib|3rdparty|templates|data)\/ {
    deny all;
    }
    location ~ ^\/nextcloud\/(?:\.|autotest|occ|issue|indie|db_|console) {
    deny all;
    }

    location ~ ^\/nextcloud\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+)\.php(?:$|\/) {
    fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
    set $path_info $fastcgi_path_info;
    try_files $fastcgi_script_name =404;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    #fastcgi_pass unix:/run/php-fpm/fpm.sock;
    fastcgi_param PATH_INFO $path_info;
    #fastcgi_param HTTPS on;
    # Avoid sending the security headers twice
    fastcgi_param modHeadersAvailable true;
    # Enable pretty urls
    fastcgi_param front_controller_active true;
    fastcgi_pass php-handler;
    fastcgi_intercept_errors on;
    fastcgi_request_buffering off;
    }

    location ~ ^\/nextcloud\/(?:updater|oc[ms]-provider)(?:$|\/) {
    try_files $uri/ =404;
    index index.php;
    }

    # Adding the cache control header for js, css and map files
    # Make sure it is BELOW the PHP block location ~ ^\/nextcloud\/.+[^\/]\.(?:css|js|woff2?|svg|gif|map)$ {
    try_files $uri /nextcloud/index.php$request_uri;
    add_header Cache-Control "public, max-age=15778463";
    # Add headers to serve security related headers (It is intended
    # to have those duplicated to the ones above)
    # Before enabling Strict-Transport-Security headers please read
    # into this topic first.
    #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;
    #
    # WARNING: Only add the preload option once you read about
    # the consequences in https://hstspreload.org/. This option
    # will add the domain to a hardcoded list that is shipped
    # in all major browsers and getting removed from this list
    # could take several months.
    add_header Referrer-Policy "no-referrer" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-Download-Options "noopen" always;
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-Permitted-Cross-Domain-Policies "none" always;
    add_header X-Robots-Tag "none" always;
    add_header X-XSS-Protection "1; mode=block" always;

    # Optional: Don't log access to assets
    access_log off;
    }

    location ~ ^\/nextcloud\/.+[^\/]\.(?:png|html|ttf|ico|jpg|jpeg|bcmap)$ {
    try_files $uri /nextcloud/index.php$request_uri;
    # Optional: Don't log access to other assets
    access_log off;
    }
    }
    }
    19 条回复    2020-02-14 20:29:10 +08:00
    V69EX
        1
    V69EX  
       2020-02-13 20:04:46 +08:00
    如果所有的可能都排除了,那么,最大的可能就是 SELinux 的策略配置了……
    station
        2
    station  
    OP
       2020-02-13 20:10:21 +08:00
    @V69EX selinux 已经关了
    MeteorCat
        3
    MeteorCat  
       2020-02-13 20:16:13 +08:00 via Android
    是不是 session 用户有问题,检查是不是 yum/apt 安装 php-fpm 的用户组是不是 apache,而你的 nginx 没有修改 session 权限
    station
        4
    station  
    OP
       2020-02-13 20:23:45 +08:00
    @MeteorCat

    user = nginx
    ; RPM: Keep a group allowed to write in log dir.
    group = nginx

    ; The address on which to accept FastCGI requests.
    ; Valid syntaxes are:
    ; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on
    ; a specific port;
    ; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
    ; a specific port;
    ; 'port' - to listen on a TCP socket to all addresses
    ; (IPv6 and IPv4-mapped) on a specific port;
    ; '/path/to/unix/socket' - to listen on a unix socket.
    ; Note: This value is mandatory.
    listen = /run/php-fpm/fpm.sock

    ; Set listen(2) backlog.
    ; Default Value: 511
    ;listen.backlog = 511

    ; Set permissions for unix socket, if one is used. In Linux, read/write
    ; permissions must be set in order to allow connections from a web server.
    ; Default Values: user and group are set as the running user
    ; mode is set to 0660
    listen.owner = nginx
    listen.group = nginx
    listen.mode = 0660
    micao
        5
    micao  
       2020-02-13 20:30:14 +08:00
    @station 看看 fpm.sock 文件在不在那儿?如果用的 php7 的话,sock 文件好像不是默认的。
    station
        6
    station  
    OP
       2020-02-13 20:34:13 +08:00
    @micao 在的

    ls -l /run/php-fpm/fpm.sock

    srw-rw---- 1 nginx nginx 0 2 月 13 07:09 /run/php-fpm/fpm.sock
    MeteorCat
        7
    MeteorCat  
       2020-02-13 20:48:05 +08:00 via Android
    @station 默认 session 目录看看权限组,在 /var/lib/php/session
    station
        8
    station  
    OP
       2020-02-13 20:56:23 +08:00
    @MeteorCat 此目录是空的,该文件夹权限默认 root:apache

    应该是我表达问题有误

    烦请您看一下这张图
    https://s2.ax1x.com/2020/02/13/1LqrVA.png
    MeteorCat
        9
    MeteorCat  
       2020-02-13 21:14:15 +08:00 via Android
    @station 这样信息好少呀,只知道 500 错误
    dilu
        10
    dilu  
       2020-02-14 09:15:42 +08:00
    1. 确认关闭 SeLinux
    2. 确认 nginx 的运行用户
    3. 确认 php-fpm 的运行用户要跟 nginx 一直
    4. 确认代码目录真是存在切存在 index.php 并且文件属于上面两条的用户或者用户组
    5. 确认 sock 文件存在并且上面的用户能 read
    6. server 换成 unix:///run/php-fpm/fpm.sock;
    7. 还是不行请贴一下 debug 下面的 error_log

    你这是在安装 nextcloud 我以前搞过 没遇到你这个问题
    encro
        11
    encro  
       2020-02-14 09:35:58 +08:00
    1,通过 ps 查看 php-fpm 进程的配置文件;
    2,查看 php-fpm 配置文件,开启 fpm 的 access 和 error 日志;
    3,重启 fpm,用 ps 看看是否运行成功;
    4,查看 fpm 日志,是否有请求过来,没有的话,修改监听方式为端口试试;

    一般就楼上的问题:
    1,关闭 SeLinux ;
    2,nginx,fpm,代码,sock 文件,log 目录所属用户一致;
    3,server 换成 unix:///run/php-fpm/fpm.sock;
    station
        12
    station  
    OP
       2020-02-14 17:53:02 +08:00
    @dilu

    1 .确认已关闭 selinux
    2. nginx 和 php-fpm 的运行用户确认一致
    3. nextcloud 的文件夹确实存在于 /var/www 目录下,且用户与用户组为 nginx
    4. sock 文件存在,权限正确
    5. server 换成 unix:///run/php-fpm/fpm.sock; 结果一样的

    2020/02/14 04:51:01 [notice] 1632#1632: start worker processes
    2020/02/14 04:51:01 [notice] 1632#1632: start worker process 1633
    2020/02/14 04:51:01 [notice] 1632#1632: start worker process 1634
    2020/02/14 04:51:05 [notice] 1633#1633: *1 "^" matches "/nextcloud", client: 192.168.1.238, server: localhost, request: "GET /nextcloud HTTP/1.1", host: "192.168.1.157"
    2020/02/14 04:51:05 [notice] 1633#1633: *1 rewritten data: "/nextcloud/index.php", args: "", client: 192.168.1.238, server: localhost, request: "GET /nextcloud HTTP/1.1", host: "192.168.1.157"
    2020/02/14 04:51:05 [notice] 1633#1633: *1 "^" matches "/nextcloud/", client: 192.168.1.238, server: localhost, request: "GET /nextcloud/ HTTP/1.1", host: "192.168.1.157"
    2020/02/14 04:51:05 [notice] 1633#1633: *1 rewritten data: "/nextcloud/index.php", args: "", client: 192.168.1.238, server: localhost, request: "GET /nextcloud/ HTTP/1.1", host: "192.168.1.157"
    2020/02/14 04:51:05 [notice] 1633#1633: *1 "^" matches "/nextcloud", client: 192.168.1.238, server: localhost, request: "GET /nextcloud HTTP/1.1", host: "192.168.1.157"
    2020/02/14 04:51:05 [notice] 1633#1633: *1 rewritten data: "/nextcloud/index.php", args: "", client: 192.168.1.238, server: localhost, request: "GET /nextcloud HTTP/1.1", host: "192.168.1.157"
    2020/02/14 04:51:05 [notice] 1633#1633: *1 "^" matches "/nextcloud/", client: 192.168.1.238, server: localhost, request: "GET /nextcloud/ HTTP/1.1", host: "192.168.1.157"
    2020/02/14 04:51:05 [notice] 1633#1633: *1 rewritten data: "/nextcloud/index.php", args: "", client: 192.168.1.238, server: localhost, request: "GET /nextcloud/ HTTP/1.1", host: "192.168.1.157"
    2020/02/14 04:51:06 [notice] 1633#1633: *1 "^" matches "/nextcloud", client: 192.168.1.238, server: localhost, request: "GET /nextcloud HTTP/1.1", host: "192.168.1.157"
    2020/02/14 04:51:06 [notice] 1633#1633: *1 rewritten data: "/nextcloud/index.php", args: "", client: 192.168.1.238, server: localhost, request: "GET /nextcloud HTTP/1.1", host: "192.168.1.157"
    2020/02/14 04:51:06 [notice] 1633#1633: *1 "^" matches "/nextcloud/", client: 192.168.1.238, server: localhost, request: "GET /nextcloud/ HTTP/1.1", host: "192.168.1.157"
    2020/02/14 04:51:06 [notice] 1633#1633: *1 rewritten data: "/nextcloud/index.php", args: "", client: 192.168.1.238, server: localhost, request: "GET /nextcloud/ HTTP/1.1", host: "192.168.1.157"
    station
        13
    station  
    OP
       2020-02-14 18:01:05 +08:00
    @encro

    - - 14/Feb/2020:04:45:19 -0500 "GET /nextcloud/index.php" 500 /var/www/nextcloud/index.php 61.445 4096 81.37%
    - - 14/Feb/2020:04:45:47 -0500 "GET /nextcloud/index.php" 500 /var/www/nextcloud/index.php 5.365 2048 0.00%
    - - 14/Feb/2020:04:45:47 -0500 "GET /nextcloud/index.php" 500 /var/www/nextcloud/index.php 4.944 2048 0.00%
    - - 14/Feb/2020:04:45:47 -0500 "GET /nextcloud/index.php" 500 /var/www/nextcloud/index.php 4.700 2048 0.00%
    - - 14/Feb/2020:04:51:05 -0500 "GET /nextcloud/index.php" 302 /var/www/nextcloud/index.php 1.014 2048 0.00%
    - - 14/Feb/2020:04:51:05 -0500 "GET /nextcloud/index.php" 500 /var/www/nextcloud/index.php 3.086 2048 324.04%
    - - 14/Feb/2020:04:51:05 -0500 "GET /nextcloud/index.php" 302 /var/www/nextcloud/index.php 0.341 2048 0.00%
    - - 14/Feb/2020:04:51:05 -0500 "GET /nextcloud/index.php" 500 /var/www/nextcloud/index.php 2.090 2048 0.00%
    - - 14/Feb/2020:04:51:06 -0500 "GET /nextcloud/index.php" 302 /var/www/nextcloud/index.php 0.343 2048 0.00%
    - - 14/Feb/2020:04:51:06 -0500 "GET /nextcloud/index.php" 500 /var/www/nextcloud/index.php 4.010 2048 0.00%
    station
        14
    station  
    OP
       2020-02-14 18:04:00 +08:00
    @encro

    [14-Feb-2020 04:32:54] NOTICE: fpm is running, pid 919
    [14-Feb-2020 04:32:54] NOTICE: ready to handle connections
    [14-Feb-2020 04:32:54] NOTICE: systemd monitor interval set to 10000ms
    [14-Feb-2020 04:43:39] NOTICE: Terminating ...
    [14-Feb-2020 04:43:39] NOTICE: exiting, bye-bye!
    [14-Feb-2020 04:43:39] NOTICE: fpm is running, pid 1607
    [14-Feb-2020 04:43:39] NOTICE: ready to handle connections
    [14-Feb-2020 04:43:39] NOTICE: systemd monitor interval set to 10000ms
    encro
        15
    encro  
       2020-02-14 18:05:14 +08:00
    @station 这是程序出错了,和 nginx 配置已经无关,开启 notice 级别错误提示
    msg7086
        16
    msg7086  
       2020-02-14 18:05:40 +08:00
    500 错误不就是连上了么……
    encro
        17
    encro  
       2020-02-14 18:26:40 +08:00
    500 应用程序错误,
    你开启 fpm 的 access log 看下。
    开启 php.ini 的 display_error=ON,error_reporting=E_ALL

    将 index.php 改为 <?php echo 'hello';exit; 测试

    如果不是很会环境配置的话,建议用宝塔吧。
    station
        18
    station  
    OP
       2020-02-14 18:36:59 +08:00
    @encro 上面贴出来的, 我看了下 php-fpm.conf 配置文件默认: log_level = notice


    @msg7086 不是专业的,所以不怎么懂( 已尽力百度 )
    encro
        19
    encro  
       2020-02-14 20:29:10 +08:00
    @station

    php-fpm.conf 还有一个 access log 默认是不开启的

    php_flag[display_errors] = on
    php_admin_value[error_log] = /var/log/php-fpm/www-error.log
    php_admin_flag[log_errors] = on


    access.log string
    Access log 文件。 默认值:不设置

    access.format string
    access log 的格式。 默认值: "%R - %u %t \"%m %r\" %s"

    access.log = log/$pool.access.log
    #每一个请求的访问日志,默认是关闭的。
    access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"
    #设定访问日志的格式。

    [php-fpm 配置详解]( https://juejin.im/entry/5870bc8961ff4b005c3c47ec)
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3857 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 10:20 PVG 18:20 LAX 03:20 JFK 06:20
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86