Ubuntu
無法在我的伺服器上啟用 PHP-FPM
我剛剛使用 Ubuntu 18.04 和 PHP 7.3 創建了一個伺服器
但是當我檢查我的伺服器是否使用 PHP-FPM 時,我意識到不是。但是,它被很好地啟動了。
ubuntu@www-example-com:~$ sudo systemctl status php7.3-fpm ● php7.3-fpm.service - The PHP 7.3 FastCGI Process Manager Loaded: loaded (/lib/systemd/system/php7.3-fpm.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2020-03-07 13:12:45 CET; 3min 22s ago Docs: man:php-fpm7.3(8) Process: 19779 ExecStopPost=/usr/lib/php/php-fpm-socket-helper remove /run/php/php-fpm.sock /etc/php/7.3/fpm/pool.d/www.conf 73 (code=exit Process: 19803 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/7.3/fpm/pool.d/www.conf 73 (code=ex Main PID: 19781 (php-fpm7.3) Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec" Tasks: 3 (limit: 2303) CGroup: /system.slice/php7.3-fpm.service ├─19781 php-fpm: master process (/etc/php/7.3/fpm/php-fpm.conf) ├─19800 php-fpm: pool www └─19802 php-fpm: pool www Mar 07 13:12:45 www-example-com systemd[1]: Stopped The PHP 7.3 FastCGI Process Manager. Mar 07 13:12:45 www-example-com systemd[1]: Starting The PHP 7.3 FastCGI Process Manager... Mar 07 13:12:45 www-example-com systemd[1]: Started The PHP 7.3 FastCGI Process Manager.
但報告顯示:Server API: Apache 2.0 Handler
僅僅安裝 PHP 7.3 FPM 讓 Apache 使用它而不是 Apache 的 mod_php7 是不夠的;你也需要配置它。對於開箱即用的全域 PHP 7.3 FPM 配置,您可能至少需要:
sudo a2dismod php7.3 sudo a2enmod proxy_fcgi sudo a2enconf php7.3-fpm sudo systemctl reload apache2
但是,為不同的站點使用單獨的 FPM 池,以不同的使用者身份執行可能是一個更好的主意。假設您站點的文件根目錄是
/var/www/example.com
並且該文件夾歸使用者所有examplecom
,您可以例如
- 添加一個池
/etc/php/7.3/fpm/pool.d/example.conf
(您可以復製www.conf
作為基礎):[examplecom] user = examplecom group = examplecom listen = /run/php/examplecom.sock chdir = /var/www/example.com . . .
- 讓您在 Apache 上的虛擬主機使用此套接字來處理 .php 文件:
<VirtualHost *:80> ServerName example.com DocumentRoot /var/www/example.com <FilesMatch ".php$"> SetHandler "proxy:unix:/run/php/examplecom.sock|fcgi://localhost/" </FilesMatch> . . . </VirtualHost>
sudo systemctl reload php7.3-fpm apache2