Apache-2.4

使用 PHP-FPM 從 MPM Worker 切換到 Event

  • January 13, 2016

CentOS 7、Apache 2.4、FPM/FastCGI、MariaDB

我的 512M VPS 佔用了一個開發 WordPress 站點的記憶體,所以我希望這會引導我走上一條更好的調整之路;如果沒有,請告知。

我正在嘗試從 MPM Worker 切換到 MPM Event,但在 Apache 重新啟動時收到以下錯誤:

AH00526: Syntax error on line 31 of /etc/httpd/conf.d/php.conf:
Invalid command 'php_value', perhaps misspelled or defined by a module not included in the server configuration

/etc/httpd/conf.modules.d/00-mpm.conf

# Select the MPM module which should be used by uncommenting exactly
# one of the following LoadModule lines:

# prefork MPM: Implements a non-threaded, pre-forking web server
# See: http://httpd.apache.org/docs/2.4/mod/prefork.html
#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

# worker MPM: Multi-Processing Module implementing a hybrid
# multi-threaded multi-process web server
# See: http://httpd.apache.org/docs/2.4/mod/worker.html
#
#LoadModule mpm_worker_module modules/mod_mpm_worker.so

# event MPM: A variant of the worker MPM with the goal of consuming
# threads only for connections with active processing
# See: http://httpd.apache.org/docs/2.4/mod/event.html
#
LoadModule mpm_event_module modules/mod_mpm_event.so

虛擬主機:

<VirtualHost *:80>

   ServerName localhost

   ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/var/run/php-fpm/php-fpm.sock|fcgi://127.0.0.1:9000/var/www/html

   DocumentRoot /var/www/html
   <Directory /var/www/html>
       Options All -Indexes
       AllowOverride All
       Require all granted
   </Directory>

   ErrorLog /var/log/httpd/localhost_error.log
   CustomLog /var/log/httpd/localhost_access.log combined

</VirtualHost>

/etc/httpd/conf.d/php.conf

#
# Cause the PHP interpreter to handle files with a .php extension.
#
<FilesMatch \.php$>
   SetHandler application/x-httpd-php
</FilesMatch>

#
# Allow php to handle Multiviews
#
AddType text/html .php

#
# Add index.php to the list of files that will be served as directory
# indexes.
#
DirectoryIndex index.php

#
# Uncomment the following lines to allow PHP to pretty-print .phps
# files as PHP source code:
#
#<FilesMatch \.phps$>
#    SetHandler application/x-httpd-php-source
#</FilesMatch>

#
# Apache specific PHP configuration options
# those can be override in each configured vhost
#
php_value session.save_handler "files"
php_value session.save_path    "/var/lib/php/session"

發現我需要將 php.conf 的最後幾行設置為有條件的。

<IfModule mpm_prefork_module>
#
# Apache specific PHP configuration options
# those can be override in each configured vhost
#
php_value session.save_handler "files"
php_value session.save_path "/var/lib/php/session"
</IfModule>

引用自:https://serverfault.com/questions/742581