You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何仅为单个虚拟主机禁用PHP-FPM并使用PHP 7.4?

如何仅为单个虚拟主机禁用PHP-FPM并使用PHP 7.4?

嗨,我完全理解你的困扰——有时候特定的应用集成(比如你这个Prestashop和代发货平台的对接)就是对FPM有奇怪的兼容性问题,非得换一种PHP运行方式才行。在Ubuntu 22.04上,你可以为单个虚拟主机配置使用PHP 7.4的CGI模式(而非FPM),同时不影响其他虚拟主机的FPM设置,具体步骤如下:

1. 安装PHP 7.4 CGI组件

首先确保你的服务器上安装了PHP 7.4的CGI版本:

sudo apt update
sudo apt install php7.4-cgi

这会安装PHP 7.4的CGI执行程序,用来处理PHP请求而无需FPM。

2. 修改目标虚拟主机的配置

找到你的Prestashop虚拟主机配置文件(通常位于/etc/apache2/sites-available/目录下,比如命名为prestashop.conf),用编辑器打开:

sudo nano /etc/apache2/sites-available/prestashop.conf

<VirtualHost>块内,先移除之前设置的FPM相关<FilesMatch>规则,然后添加以下配置来启用PHP 7.4 CGI:

# 清除之前的FPM处理规则,避免冲突
<FilesMatch "\.php$">
    SetHandler None
</FilesMatch>

# 配置PHP 7.4 CGI处理逻辑
AddHandler php74-cgi .php
Action php74-cgi /php74-cgi
ScriptAlias /php74-cgi /usr/bin/php-cgi7.4

# 确保CGI脚本的访问权限
<Location "/php74-cgi">
    Require all granted
</Location>

3. 验证配置并重启Apache

先检查Apache配置是否有语法错误:

sudo apache2ctl configtest

如果输出Syntax OK,就可以重启Apache使配置生效:

sudo systemctl restart apache2

4. 确认配置生效

在你的Prestashop根目录创建一个临时的phpinfo.php文件,内容如下:

<?php
phpinfo();
?>

通过浏览器访问这个文件,找到Server API这一行,它应该显示为CGI/FastCGI(而非FPM相关的内容),同时确认PHP Version是7.4。确认无误后记得删除这个文件,避免安全风险。

注意事项

  • CGI模式和FPM的运行机制不同,CGI会为每个PHP请求启动一个新进程,性能上比FPM稍差,但对于单个虚拟主机来说,这种差异通常可以接受。
  • 如果你需要调整PHP 7.4的配置(比如内存限制、上传大小等),可以编辑/etc/php/7.4/cgi/php.ini文件,修改后重启Apache即可生效。

备注:内容来源于stack exchange,提问作者gabrieledeluca

火山引擎 最新活动