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


  • CentOS 7.5
  • 阿帕奇 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日志中没有记录任何内容。有人可以告诉我我可能出错的地方吗?如果需要,我可以再次运行整个过程,或者如果可能的话可以修复东西。

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

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

您可以阅读 PHP 配置提示,其中解释了切换到 FPM。

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

[PHP-fpm With apache]yum -y install httpdsystemctl start httpd.servicesystemctl enable httpd.servicemkdir /etc/httpd/sites-availablemkdir /etc/httpd/sites-enabledAdd this line to the end of the filevim /etc/httpd/conf/httpd.confIncludeOptional sites-enabled/*.confvim /etc/httpd/sites-available/example.com.conf<VirtualHost *:80>ProxyPassMatch ^/(.*.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/$1</VirtualHost>

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

最新更新