我刚刚用 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.
但报告显示:服务器 API:Apache 2.0 处理程序
答案1
仅安装 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