试图让 PHP-FPM 工作 (Apache 2.4.33)

Posted

技术标签:

【中文标题】试图让 PHP-FPM 工作 (Apache 2.4.33)【英文标题】:Trying to get PHP-FPM to work (Apache 2.4.33) 【发布时间】:2018-12-01 19:48:37 【问题描述】: CentOS 7.5 Apache 2.4.33 php-FPM 7.2(通过 Remi 存储库安装)

所以我试图让这个手动编译的 Apache 版本与 PHP 一起运行。 Apache 一切都很好而且很花哨,但我不确定我是否在 PHP 端正确安装了东西,或者问题是否出在我的虚拟主机配置中。我将尝试添加任何相关信息:

当前安装的 PHP 包

mod_fcgid-2.3.9-15.el7.x86_64
php-7.2.7-1.el7.remi.x86_64
php-cli-7.2.7-1.el7.remi.x86_64
php-common-7.2.7-1.el7.remi.x86_64
php-fpm-7.2.7-1.el7.remi.x86_64
php-gd-7.2.7-1.el7.remi.x86_64
php-json-7.2.7-1.el7.remi.x86_64
php-mbstring-7.2.7-1.el7.remi.x86_64
php-mysqlnd-7.2.7-1.el7.remi.x86_64
php-opcache-7.2.7-1.el7.remi.x86_64
php-pdo-7.2.7-1.el7.remi.x86_64
php-xml-7.2.7-1.el7.remi.x86_64
php-xmlrpc-7.2.7-1.el7.remi.x86_64

加载的模块

 access_compat_module (shared)
 auth_basic_module (shared)
 authn_core_module (shared)
 authn_file_module (shared)
 authz_core_module (shared)
 authz_groupfile_module (shared)
 authz_host_module (shared)
 authz_user_module (shared)
 autoindex_module (shared)
 core_module (static)
 deflate_module (shared)
 dir_module (shared)
 env_module (shared)
 fcgid_module (shared)
 filter_module (shared)
 headers_module (shared)
 http2_module (shared)
 http_module (static)
 log_config_module (shared)
 mime_module (shared)
 mpm_event_module (static)
 proxy_fcgi_module (shared)
 proxy_module (shared)
 reqtimeout_module (shared)
 rewrite_module (shared)
 setenvif_module (shared)
 socache_shmcb_module (shared)
 so_module (static)
 ssl_module (shared)
 unixd_module (shared)
 version_module (shared)

Apache 的用户是 httpd,组是 www-data。

下面是虚拟主机配置(尝试根据一些文章将事物混合在一起,但我对实现并不完全清楚)。

<VirtualHost *:80>

  ServerName domain.com
  ServerAlias www.domain.com
  DocumentRoot /var/www/domain.com/httpdocs
  ErrorLog /var/www/domain.com/logs/error_log
  CustomLog /var/www/domain.com/logs/access_log combined

#  <LocationMatch "^/(.*\.php(/.*)?)$">
#    ProxyPass fcgi://127.0.0.1:9000/var/www/domain.com/httpdocs/$1
#  </LocationMatch>

  <IfModule mod_fastcgi.c>
    AddHandler php7-fcgi-webmin .php
    Action php7-fcgi-webmin /php7-fcgi-webmin
    Alias /php7-fcgi-webmin /usr/lib/cgi-bin/php7-fcgi-webmin

    <Directory "/usr/lib/cgi-bin">
       Require all granted
    </Directory>

    <FilesMatch ".+\.ph(p[345]?|t|tml)$">
      SetHandler php7-fcgi-webmin
    </FilesMatch>
  </IfModule>

  <Directory /var/www/domain.com/httpdocs>
    AllowOverride All
    Require all granted
    Options +FollowSymLinks -Indexes -Includes
  </Directory>

</VirtualHost>

以下是该站点的 FPM 池配置。

[domain_com]
user = webmin
group = www-data

listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
listen.owner = webmin
listen.group = www-data

pm = dynamic
pm.max_children = 50
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 35

slowlog = /var/www/domain.com/logs/php_fpm_slow_log

php_flag[display_errors] = off
php_admin_value[error_log] = /var/www/domain.com/logs/php_fpm_error_log
php_admin_flag[log_errors] = on
php_admin_value[memory_limit] =  64M
php_admin_value[open_basedir] = /var/www/domain.com/httpdocs
php_value[session.save_handler] = files
php_value[session.save_path]    = /var/lib/php/session
php_value[soap.wsdl_cache_dir]  = /var/lib/php/wsdlcache

这就是我所在的位置。当我访问 phpinfo 页面时,它只打印 PHP 文件的内容。 Apache 或 PHP-FPM 日志中没有记录任何内容。有人能告诉我哪里可能出错了吗?如果需要,我可以再次运行整个过程,或者在可能的情况下进行修复。

【问题讨论】:

【参考方案1】:

对于 apache 2.4,最好的方法是使用 FPM 和 SetHandler 来代理

SetHandler "proxy:fcgi://127.0.0.1:9000"

您可以阅读PHP Configuration Tips,其中解释了切换到 FPM。

您可以删除“php”包(它提供了不需要的 mod_php)

【讨论】:

【参考方案2】:

[PHP-fpm With apache] yum -y install httpd systemctl start httpd.service systemctl enable httpd.service mkdir /etc/httpd/sites-available mkdir /etc/httpd/sites-enabled Add this line to the end of the file vim /etc/httpd/conf/httpd.conf IncludeOptional sites-enabled/*.conf vim /etc/httpd/sites-available/example.com.conf &lt;VirtualHost *:80&gt; ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/$1 &lt;/VirtualHost&gt;

ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf systemctl restart httpd.service

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于试图让 PHP-FPM 工作 (Apache 2.4.33)的主要内容,如果未能解决你的问题,请参考以下文章

Apache 2.4 + PHP-FPM 和授权标头

Apache 的不同 Php-Fpm 容器

Apache 的不同 Php-Fpm 容器

PHP-FPM 在执行繁重工作时用户过多时崩溃

Apache FastCgi、PHP-FPM、Suexec 权限被拒绝错误

Apache FastCgi、PHP-FPM、Suexec 权限被拒绝错误