简体   繁体   English

无法访问 PHP-FPM 站点

[英]Can not access PHP-FPM site

Using OpenSUSE v15.2, Apache.使用 OpenSUSE v15.2,Apache。

Installed PHP-FPM with zypper.使用 zypper 安装 PHP-FPM。 Followed instructions on this site: https://en.opensuse.org/SDB:Apache_FastCGI_and_PHP-FPM_configuration遵循本网站上的说明: https://en.opensuse.org/SDB:Apache_FastCGI_and_PHP-FPM_configuration

I restarted Apache and PHP-FPM.我重新启动了 Apache 和 PHP-FPM。 However the site is not loading in the browser.但是,该站点未在浏览器中加载。

I get HTTP ERROR 502.我得到 HTTP 错误 502。

lynx http://10.20.30.40/info.php results Alert:. HTTP/1.0 502 cannotconnect lynx http://10.20.30.40/info.php结果Alert:. HTTP/1.0 502 cannotconnect Alert:. HTTP/1.0 502 cannotconnect

Also get this error:也得到这个错误:

McAfee Web Gateway - Notification

Cannot Connect
   The proxy could not connect to the destination in time.
   URL:
     _____________________________________________________________________________________________________

   generated 2020-08-02 15:00:37 by McAfee Web Gateway
   Lynx/2.8.9dev.16 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/1.1.1d

Might be just a firewall issue?可能只是防火墙问题?

Or error is in my Apache/PHP-FPM config?或者我的 Apache/PHP-FPM 配置中有错误?

/etc/apache2/vhosts.d/mysite.conf /etc/apache2/vhosts.d/mysite.conf

<VirtualHost 10.20.30.40:80>
    ServerAdmin webmaster@localhost
    ServerName devsite.com

    DocumentRoot /srv/www/mydir

    # RewriteEngine On
    # RewriteRule    ^(.*)$    https://devsite.com$1 [L,R=301]

    # ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/srv/www/mydir$1


    <FilesMatch \.php$>
        SetHandler "proxy:fcgi://127.0.0.1:9000"
    </FilesMatch>

    <IfModule dir_module>
        DirectoryIndex index.html index.php
    </IfModule>


    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /srv/www/mydir/>
            Options FollowSymLinks MultiViews
            AllowOverride None
            Require all granted
    </Directory>
    AccessFileName .htaccess
    ErrorLog /var/log/apache2/myhost.err
    CustomLog /var/log/apache2/myhost.acs combined

  LogLevel warn
</VirtualHost>

I tried to debug the problem with lynx browser locally and got this result:我尝试在本地使用 lynx 浏览器调试问题并得到以下结果:

lynx 127.0.0.1:9000

Looking up 127.0.0.1 first
Looking up 127.0.0.1:9000
Making HTTP connection to 127.0.0.1:9000
Sending HTTP request.
HTTP request sent; waiting for response.
Retrying as HTTP0 request.
Looking up 127.0.0.1:9000
Making HTTP connection to 127.0.0.1:9000
Sending HTTP request.
HTTP request sent; waiting for response.
Alert!: Unexpected network read error; connection aborted.
Can't Access `http://127.0.0.1:9000/'
Alert!: Unable to access document.

lynx: Can't access startfile

Also tried也试过

lynx http://127.0.0.1/info.php


Looking up 127.0.0.1 first
Looking up 127.0.0.1
Making HTTP connection to 127.0.0.1
Sending HTTP request.
HTTP request sent; waiting for response.
HTTP/1.1 200 OK

which executes phpinfo().它执行 phpinfo()。 The php was not executed, just offered the info.php to download. php 没有执行,只是提供 info.php 下载。 So php is not interpreted.所以 php 没有被解释。

PHP-FPM log: PHP-FPM 日志:

tail -f /var/log/php-fpm.log
[02-Aug-2020 01:37:29] NOTICE: Terminating ...
[02-Aug-2020 01:37:29] NOTICE: exiting, bye-bye!
[02-Aug-2020 01:37:29] NOTICE: fpm is running, pid 8099
[02-Aug-2020 01:37:29] NOTICE: ready to handle connections
[02-Aug-2020 01:37:29] NOTICE: systemd monitor interval set to 10000ms
[02-Aug-2020 01:39:47] NOTICE: Terminating ...
[02-Aug-2020 01:39:47] NOTICE: exiting, bye-bye!
[02-Aug-2020 01:39:47] NOTICE: fpm is running, pid 8202
[02-Aug-2020 01:39:47] NOTICE: ready to handle connections
[02-Aug-2020 01:39:47] NOTICE: systemd monitor interval set to 10000ms 

Shows that it is running, and shows restarts, nothing more.显示它正在运行,并显示重新启动,仅此而已。

Apache error log: Apache 错误日志:

tail -f /var/log/apache2/error_log
[Sun Aug 02 01:37:34.743959 2020] [mpm_prefork:notice] [pid 6160] AH00170: caught SIGWINCH, shutting down gracefully
AH00557: httpd-prefork: apr_sockaddr_info_get() failed for myhost
AH00558: httpd-prefork: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
[Sun Aug 02 01:37:34.818193 2020] [mpm_prefork:notice] [pid 8113] AH00163: Apache/2.4.43 (Linux/SUSE) OpenSSL/1.1.1d configured -- resuming normal operations
[Sun Aug 02 01:37:34.818251 2020] [core:notice] [pid 8113] AH00094: Command line: '/usr/sbin/httpd-prefork -D SYSCONFIG -D SSL -C PidFile /var/run/httpd.pid -C Include /etc/apache2/sysconfig.d//loadmodule.conf -C Include /etc/apache2/sysconfig.d//global.conf -f /etc/apache2/httpd.conf -c Include /etc/apache2/sysconfig.d//include.conf -D SYSTEMD -D FOREGROUND'
[Sun Aug 02 01:39:45.771523 2020] [mpm_prefork:notice] [pid 8113] AH00170: caught SIGWINCH, shutting down gracefully
AH00557: httpd-prefork: apr_sockaddr_info_get() failed for myhost
AH00558: httpd-prefork: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
[Sun Aug 02 01:39:45.852536 2020] [mpm_prefork:notice] [pid 8186] AH00163: Apache/2.4.43 (Linux/SUSE) OpenSSL/1.1.1d configured -- resuming normal operations
[Sun Aug 02 01:39:45.852586 2020] [core:notice] [pid 8186] AH00094: Command line: '/usr/sbin/httpd-prefork -D SYSCONFIG -D SSL -C PidFile /var/run/httpd.pid -C Include /etc/apache2/sysconfig.d//loadmodule.conf -C Include /etc/apache2/sysconfig.d//global.conf -f /etc/apache2/httpd.conf -c Include /etc/apache2/sysconfig.d//include.conf -D SYSTEMD -D FOREGROUND' 

In www.conf I enabled在 www.conf 我启用

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

But no /var/log/fpm-php.www.log was created.但是没有创建 /var/log/fpm-php.www.log。

Apache info: Apache 信息:

apachectl -S
VirtualHost configuration:
10.20.30.40:80           mysite.com (/etc/apache2/vhosts.d/myhost.conf:1)
*:443                  mysite.com (/etc/apache2/vhosts.d/myhost.ssl.conf:1)
ServerRoot: "/srv/www"
Main DocumentRoot: "/srv/www/htdocs"
Main ErrorLog: "/var/log/apache2/error_log"
Mutex proxy: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/run/" mechanism=default
Mutex mpm-accept: using_defaults
Mutex ssl-stapling-refresh: using_defaults
Mutex rewrite-map: using_defaults
Mutex ssl-stapling: using_defaults
PidFile: "/var/run/httpd.pid"
Define: SYSCONFIG
Define: SSL
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="wwwrun" id=471
Group: name="www" id=471

/etc/apache2/conf.d/mod_fcgid.conf: /etc/apache2/conf.d/mod_fcgid.conf:

<IfModule fcgid_module>
FcgidIPCDir /var/lib/apache2/fcgid/
FcgidProcessTableFile /var/lib/apache2/fcgid/shm
# <FilesMatch "\.php$">
   # SetHandler "proxy:fcgi://localhost/"
    # SetHandler "proxy:fcgi://127.0.0.1:9000/"
# </FilesMatch>
</IfModule>

/etc/php7/fpm/php-fpm.conf /etc/php7/fpm/php-fpm.conf

[global]
include=/etc/php7/fpm/php-fpm.d/*.conf

/etc/php7/fpm/php-fpm.d/www.conf /etc/php7/fpm/php-fpm.d/www.conf

[www]
user = wwwrun
group = www
listen = 127.0.0.1:9000
listen.owner = wwwrun
listen.group = www
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
php_flag[display_errors] = on
php_admin_value[error_log] = /var/log/fpm-php.www.log
php_admin_flag[log_errors] = on

/etc/apache2/sysconfig.d/loadmodule.conf /etc/apache2/sysconfig.d/loadmodule.conf

# File generated from /etc/sysconfig/apache2, do not edit. Edit the sysconfig file instead.
LoadModule actions_module /usr/lib64/apache2-prefork/mod_actions.so
LoadModule alias_module /usr/lib64/apache2-prefork/mod_alias.so
LoadModule auth_basic_module /usr/lib64/apache2-prefork/mod_auth_basic.so
LoadModule authn_core_module /usr/lib64/apache2-prefork/mod_authn_core.so
LoadModule authn_file_module /usr/lib64/apache2-prefork/mod_authn_file.so
LoadModule authz_host_module /usr/lib64/apache2-prefork/mod_authz_host.so
LoadModule authz_groupfile_module /usr/lib64/apache2-prefork/mod_authz_groupfile.so
LoadModule authz_core_module /usr/lib64/apache2-prefork/mod_authz_core.so
LoadModule authz_user_module /usr/lib64/apache2-prefork/mod_authz_user.so
LoadModule autoindex_module /usr/lib64/apache2-prefork/mod_autoindex.so
LoadModule cgi_module /usr/lib64/apache2-prefork/mod_cgi.so
LoadModule dir_module /usr/lib64/apache2-prefork/mod_dir.so
LoadModule env_module /usr/lib64/apache2-prefork/mod_env.so
LoadModule expires_module /usr/lib64/apache2-prefork/mod_expires.so
LoadModule include_module /usr/lib64/apache2-prefork/mod_include.so
LoadModule log_config_module /usr/lib64/apache2-prefork/mod_log_config.so
LoadModule mime_module /usr/lib64/apache2-prefork/mod_mime.so
LoadModule negotiation_module /usr/lib64/apache2-prefork/mod_negotiation.so
LoadModule setenvif_module /usr/lib64/apache2-prefork/mod_setenvif.so
LoadModule ssl_module /usr/lib64/apache2-prefork/mod_ssl.so
LoadModule socache_shmcb_module /usr/lib64/apache2-prefork/mod_socache_shmcb.so
LoadModule userdir_module /usr/lib64/apache2-prefork/mod_userdir.so
LoadModule reqtimeout_module /usr/lib64/apache2-prefork/mod_reqtimeout.so
LoadModule rewrite_module /usr/lib64/apache2-prefork/mod_rewrite.so
LoadModule proxy_module /usr/lib64/apache2-prefork/mod_proxy.so
LoadModule proxy_fcgi_module /usr/lib64/apache2-prefork/mod_proxy_fcgi.so

Any idea, what can be the problem?任何想法,可能是什么问题?

To fix the below error, first try using local host as the server name and test locally.要修复以下错误,首先尝试使用本地主机作为服务器名称并在本地进行测试。 (hope you have a working index.php which can give some response) (希望你有一个工作索引。php 可以给出一些回应)

AH00558: httpd-prefork: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. AH00558:httpd-prefork:无法可靠地确定服务器的完全限定域名,使用 127.0.0.1。 Set the 'ServerName' directive globally to suppress this message全局设置“ServerName”指令以禁止显示此消息

To pass request to php-fpm first you need to enable below modules on Apache要首先将请求传递给 php-fpm,您需要在 Apache 上启用以下模块

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

Then try adding below in <FilesMatch.php$>然后尝试在 <FilesMatch.php$> 中添加以下内容

ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/path/to/your/documentroot/$1

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM