首頁 >後端開發 >php教程 >在 Linux 上使用多個 PHP 版本

在 Linux 上使用多個 PHP 版本

Barbara Streisand
Barbara Streisand原創
2024-11-27 09:14:10386瀏覽

Using Multiple PHP Version on Linux

在這篇文章中我們將討論如何使用多個 PHP 版本。有時我們會遇到這樣的情況:我們必須使用不同的技術和 PHP 版本來處理不同的應用程式專案。例如,我們要執行 Laravel 11 PHP8 和 CodeIgniter 4 PHP7 項目,它們都執行不同版本的 PHP。實際上,還有一種更簡單的方法,即使用 Docker 容器,但我們將在下一篇文章中討論它。現在,我們將討論如何在主機上安裝、設定和執行多個 PHP。

好吧,首先我們需要使用 Apache2 設定我們的網頁伺服器並設定我們將使用的 PHP。

apt install apache2

我們將從 PPA 儲存庫安裝,因此我們需要先新增儲存庫

apt-get install software-properties-common -y

這很有用,因此您可以執行 add-apt-repository 命令。接下來,使用以下命令新增儲存庫

add-apt-repository ppa:ondrej/php
apt update -y

我們安裝 PHP 版本 7.2

apt-get install php7.2 php7.2-fpm php7.2-mysql libapache2-mod-php7.2 libapache2-mod-fcgid -y

然後我們安裝PHP版本8,因為我的vps是Ubuntu 24.04所以預設是PHP 8.3。要安裝它而不指定版本,如下所示。

apt-get install php php-fpm php-mysql libapache2-mod-php libapache2-mod-fcgid -y

運行 php-fpm

systemctl start php7.2-fpm
systemctl start php8.3-fpm

然後啟動以下模組,以便您可以使用多個 PHP 版本

a2enmod actions fcgid alias proxy_fcgi

然後重新啟動 apache 服務以套用所有變更。

systemctl restart apache2

好吧,讓我們繼續在網頁伺服器上設定虛擬主機。

mkdir /var/www/app1
mkdir /var/www/app2

同時設定權限和擁有者

chown -R www-data:www-data /var/www/app1
chown -R www-data:www-data /var/www/app2
chmod -R 775 /var/www/app1
chmod -R 775 /var/www/app2

繼續在 apache2 上設定 site-available,我們先建立設定檔。

因為我們沒有網域,所以我們將區分虛擬主機和連接埠。運行 php7.2 的連接埠 80 和運行 php8.3 的連接埠 90

nano /etc/apache2/sites-available/app1.conf

然後貼上以下配置

+<VirtualHost *:80>
+     ServerAdmin app1
+     ServerName app1.com
+     DocumentRoot /var/www/app1
+     DirectoryIndex info.php

+     <Directory /var/www/app1>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
     </Directory>

    <FilesMatch \.php$>
        # From the Apache version 2.4.10 and above, use the SetHandler to run PHP as a fastCGI process server
+         SetHandler "proxy:unix:/run/php/php7.2-fpm.sock|fcgi://localhost"
    </FilesMatch>

     ErrorLog ${APACHE_LOG_DIR}/site1.your_domain_error.log
     CustomLog ${APACHE_LOG_DIR}/site1.your_domain_access.log combined
</VirtualHost>

為 PHP 版本 8 建立另一個設定檔

nano /etc/apache2/sites-available/server2.conf

同時貼上配置

+<VirtualHost *:90>
+     ServerAdmin site2
+    ServerName site2.com
+     DocumentRoot /var/www/app2
+     DirectoryIndex info.php

+     <Directory /var/www/app2>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
     </Directory>

    <FilesMatch \.php$>
        # From the Apache version 2.4.10 and above, use the SetHandler to run PHP as a fastCGI process server
+         SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost"
    </FilesMatch>

     ErrorLog ${APACHE_LOG_DIR}/site1.your_domain_error.log
     CustomLog ${APACHE_LOG_DIR}/site1.your_domain_access.log combined
</VirtualHost>

綠色部分有幾行配置線,需要根據我們的情況和需求進行更改

然後測試一下設定是否錯誤,確保語法沒問題就可以進入下一步

apachectl configtest

接下來我們啟動虛擬主機設定

a2ensite app1.conf
a2ensite app2.conf

不要忘記禁用預設配置

a2dissite 000-default.conf

因為我們在虛擬主機上使用不同的端口,所以我們需要先註冊它。

nano /etc/apache2/ports.conf

加到我塗成綠色的行

apt install apache2

如果一切都完成了,我們只需重新啟動伺服器並進行測試即可

apt-get install software-properties-common -y

透過存取IP位址和連接埠進行測試。我建議建立一個包含函數 phpinfo(); 的 info.php 檔案。在每個文檔根目錄中。

請造訪http://ip-server:port進行測試

希望這有用,祝你嘗試好運

以上是在 Linux 上使用多個 PHP 版本的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn