You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过.htaccess让Ubuntu VPS部分目录运行PHP5.5(默认PHP7.1)

解决Ubuntu VPS特定目录使用PHP5.5,全局默认PHP7.1的问题

我来帮你搞定这个需求——在Ubuntu VPS上让指定目录用PHP5.5,同时保持全局默认PHP7.1。核心问题在于Apache的mod_php模块只能同时加载一个PHP版本,所以我们得切换到**FastCGI(php-fpm)**模式来实现版本隔离,下面是具体操作步骤:

1. 确保PHP5.5的php-fpm服务正常运行

首先检查PHP5.5的fpm进程是否还在系统中:

sudo systemctl status php5.5-fpm

如果显示未安装,重新安装(假设你之前的PHP5.5是通过官方源/PPA安装的):

sudo apt-get install php5.5-fpm

启动服务并设置开机自启:

sudo systemctl start php5.5-fpm
sudo systemctl enable php5.5-fpm

2. 配置Apache支持FastCGI代理

确保Apache启用了必要的模块:

sudo a2enmod actions fastcgi alias proxy proxy_fcgi
sudo systemctl restart apache2

3. 为目标目录配置PHP5.5规则

方法一:虚拟主机配置(推荐,性能更优)

找到你的网站虚拟主机配置文件(通常在/etc/apache2/sites-available/your-site.conf),在<VirtualHost>块内添加针对目标目录的配置:

<Directory /var/www/your-site/target-dir>
    <FilesMatch \.php$>
        # 替换为你实际的PHP5.5-fpm套接字路径
        SetHandler "proxy:unix:/run/php/php5.5-fpm.sock|fcgi://localhost/"
    </FilesMatch>
</Directory>

你可以通过php5.5-fpm -t命令查看配置文件中的listen项,确认套接字路径是否正确(部分系统可能是/var/run/php5.5-fpm.sock)。

保存配置后重启Apache:

sudo systemctl restart apache2

方法二:.htaccess配置(需开启Override权限)

如果你的虚拟主机允许.htaccess覆盖配置(即AllowOverride设置为All或FileInfo),可以在目标目录下创建/编辑.htaccess文件,添加:

<FilesMatch \.php$>
    SetHandler "proxy:unix:/run/php/php5.5-fpm.sock|fcgi://localhost/"
</FilesMatch>

4. 验证配置生效

在目标目录下创建info.php文件:

<?php phpinfo(); ?>

访问该文件,检查页面顶部的PHP版本是否为5.5;同时访问网站根目录的info.php,确认全局版本仍为7.1。

常见问题排查

  • .htaccess不生效:检查虚拟主机的AllowOverride是否正确设置,确保mod_proxy和mod_proxy_fcgi模块已启用。
  • PHP5.5-fpm启动失败:查看日志/var/log/php5.5-fpm.log排查错误,可能是套接字路径冲突或配置文件语法错误。

内容的提问来源于stack exchange,提问作者user3601213

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:37:08