Debian Stretch + Apache 2.4 + PHP 5.6 + PHP 7.0 和虚拟主机

Debian Stretch + Apache 2.4 + PHP 5.6 + PHP 7.0 和虚拟主机

我有一个安装了 Apache 2.4 的小型 Debian 9 服务器。我需要它来为我的家提供 Nextcloud 服务,这需要 PHP7.0。然后我还需要让它提供相当旧的服务(http://www.refbase.net),需要 PHP5.6。

我不是 Apache 专家,我想要的只是为内部家庭使用提供这两个服务。读了一下,我似乎明白这可以通过使用PHP5-FPM和PHP7.0-FPM服务来实现?我已经安装了:

user@server:/$ sudo systemctl status php5-fpm
[sudo] password of user: 
● php5-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/lib/systemd/system/php5-fpm.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2019-11-05 22:08:08 GMT; 3 days ago

进而:

user@server:~$ sudo systemctl status php7.0-fpm
● php7.0-fpm.service - The PHP 7.0 FastCGI Process Manager
   Loaded: loaded (/lib/systemd/system/php7.0-fpm.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2019-11-09 16:48:14 GMT; 59min ago

我还安装了这些:

sudo apt install libapache2-mod-fcgid
sudo a2enmod actions fcgid alias proxy_fcgi

因此,我在 /var/www/ 中创建了两个文件夹,分别是 php56 和 php70,以配置两个不同的虚拟主机。

<VirtualHost *:80>
    ServerName php56.example.com
    DocumentRoot /var/www/php56
    <Directory /var/www/php56>
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted
    </Directory>
    <FilesMatch \.php$>
        # Apache 2.4.10+ can proxy to unix socket
        SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost/"
    </FilesMatch>
</VirtualHost>

进而:

<VirtualHost *:80>
    ServerName php72.example.com
    DocumentRoot /var/www/php70
    <Directory /var/www/php70>
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted
    </Directory>
    <FilesMatch \.php$>
        SetHandler "proxy:unix:/var/run/php/php7.0-fpm.sock|fcgi://localhost/"
    </FilesMatch>
</VirtualHost>

我在上面创建的相应 www 目录中创建了两个文件:

echo "<?php phpinfo(); ?>" > /var/www/php56/index.php
echo "<?php phpinfo(); ?>" > /var/www/php70/index.php

两个虚拟站点都已启用,但当我去测试它们时,它们都显示 PHP 7.0 已启用。当检查 /var/run/php/ 文件夹时,我只能看到 7.0 FPM sock 和 pid 文件。

更新替代方案默认激活PHP7.0。

关于如何同时提供两个 PHP 版本以便我可以运行这两个服务的任何线索?

谢谢

相关内容