如何通过.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
相关产品推荐
相关产品推荐

