簡體   English   中英

在命令行 ubuntu 16.04 上切換 php 版本

[英]Switch php versions on commandline ubuntu 16.04

我已經在我的 Ubuntu 16.04 上安裝了 php 5.6 和 php 7.1

我知道使用 Apache 作為我的網絡服務器,我可以做到

a2enmod php5.6 #to enable php5
a2enmod php7.1 #to enable php7

當我在 Apache 模塊中禁用 php7.1 並啟用 php 5.6 時,Apache 會識別更改並按預期使用 php 5.6 解釋器。

但是當我從命令行運行內部 php web 服務器時:

php -S localhost:8888

php 使用 php 7 處理請求。那么如何在命令行中在 php 5.6 和 php 7.1 之間切換?

交互切換方式

sudo update-alternatives --config php
sudo update-alternatives --config phar
sudo update-alternatives --config phar.phar

手動切換

從 PHP 5.6 => PHP 7.1

您的系統上設置了默認 PHP 5.6,您需要切換到 PHP 7.1。

阿帕奇:

$ sudo a2dismod php5.6
$ sudo a2enmod php7.1
$ sudo service apache2 restart

命令行:

$ sudo update-alternatives --set php /usr/bin/php7.1
$ sudo update-alternatives --set phar /usr/bin/phar7.1
$ sudo update-alternatives --set phar.phar /usr/bin/phar.phar7.1

從 PHP 7.1 => PHP 5.6

您的系統上設置了默認 PHP 7.1,您需要切換到 PHP 5.6。

阿帕奇:

$ sudo a2dismod php7.1
$ sudo a2enmod php5.6
$ sudo service apache2 restart

命令行:

$ sudo update-alternatives --set php /usr/bin/php5.6

來源

$ sudo update-alternatives --config php

應該適用於16.0418.0420.04 )之后的所有 ubuntu 版本

這是你應該看到的回應

There are 4 choices for the alternative php (providing /usr/bin/php).

  Selection    Path             Priority   Status
------------------------------------------------------------
* 0            /usr/bin/php7.2   72        auto mode
  1            /usr/bin/php5.6   56        manual mode
  2            /usr/bin/php7.0   70        manual mode
  3            /usr/bin/php7.1   71        manual mode
  4            /usr/bin/php7.2   72        manual mode
Press <enter> to keep the current choice[*], or type selection number:

選擇合適的版本

要列出所有可用版本並從中選擇:

sudo update-alternatives --config php

或者手動執行

sudo a2dismod php7.1 // disable
sudo a2enmod php5.6  // enable

我實際上不建議在 php 5 或 7 中使用a2enmod 。我會使用update-alternatives 您可以執行sudo update-alternatives --config php來設置要使用的系統范圍的 PHP 版本。 這使您的命令行和 apache 版本的工作方式相同。 您可以在手冊頁上閱讀有關update-alternatives更多信息。

我想你應該試試這個

從 php5.6 到 php7.1

sudo a2dismod php5.6
sudo a2enmod php7.1
sudo service apache2 restart

sudo update-alternatives --set php /usr/bin/php7.1
sudo update-alternatives --set phar /usr/bin/phar7.1
sudo update-alternatives --set phar.phar /usr/bin/phar.phar7.1

從 php7.1 到 php5.6

sudo a2dismod php7.1
sudo a2enmod php5.6
sudo service apache2 restart

sudo update-alternatives --set php /usr/bin/php5.6
sudo update-alternatives --set phar /usr/bin/phar5.6
sudo update-alternatives --set phar.phar /usr/bin/phar.phar5.6

您可以創建一個腳本來從版本切換: sudo nano switch_php然后輸入:

#!/bin/sh
#!/bin/bash
echo "Switching to PHP$1..."
case $1 in
    "7")
        sudo a2dismod php5.6
        sudo a2enmod php7.0
        sudo service apache2 restart
        sudo ln -sfn /usr/bin/php7.0 /etc/alternatives/php;;
    "5.6")
        sudo a2dismod php7.0
        sudo a2enmod php5.6
        sudo service apache2 restart
        sudo ln -sfn /usr/bin/php5.6 /etc/alternatives/php;;
esac
echo "Current version: $( php -v | head -n 1 | cut -c-7 )"

退出並保存使其可執行: sudo chmod +x switch_php

要執行腳本,只需鍵入./switch_php [VERSION_NUMBER] ,其中參數為 7 或 5.6

就是這樣,您現在可以輕松地從 PHP7 切換到 PHP 5.6!

ubuntu 20.04切換PHP 8.0PHP 7.4版本:

PHP 8.0降級PHP 7.4

sudo a2dismod php8.0
sudo a2enmod php7.4
sudo service apache2 restart
sudo update-alternatives --config php
sudo update-alternatives --config phar
sudo update-alternatives --config phar.phar
sudo service apache2 restart

PHP 7.4升級PHP 8.0

sudo a2dismod php7.4
sudo a2enmod php8.0
sudo service apache2 restart
sudo update-alternatives --config php
sudo update-alternatives --config phar
sudo update-alternatives --config phar.phar
sudo service apache2 restart

檢查更改:

  1. 在控制台運行php -v ,你會得到:

PHP 8.0.3 (cli) (built: Mar 5 2021 07:54:13) ( NTS ) 版權所有 (c) The PHP Group Zend Engine v4.0.3, 版權所有 (c) Zend Technologies with Zend OPcache v8.0.3, 版權所有 ( c),由 Zend Technologies

或者

PHP 7.4.16 (cli) (built: Mar 5 2021 07:54:38) ( NTS ) 版權所有 (c) The PHP Group Zend Engine v3.4.0, 版權所有 (c) Zend Technologies with Zend OPcache v7.4.16, 版權所有 ( c),由 Zend Technologies

  1. 通過添加phpinfo();在可運行的本地環境中添加一個 PHP 文件,例如/var/www/html/路徑phpinfo(); 並在瀏覽器中獲取 PHP 信息(在頁面頂部可以查看 PHP 版本)

可能您的系統中可能有一個舊的 PHP 版本,例如 PHP 5.6,並且您也安裝了 PHP 7.2,因此您的機器中有多個 PHP。 有一些應用程序是在較舊的 PHP 5.6 為最新版本時開發的,它們仍然存在並且您正在開發這些應用程序,您可能同時在 Laravel 上工作,但 Laravel 需要 PHP 7+ 才能開始。 得到圖片?

在這種情況下,您可以在 PHP 版本之間切換以滿足您的要求。

從 PHP 5.6 => PHP 7.2 切換

阿帕奇:-

sudo a2dismod php5.6
sudo a2enmod php7.2
sudo service apache2 restart

命令行:-

sudo update-alternatives --set php /usr/bin/php7.2
sudo update-alternatives --set phar /usr/bin/phar7.2
sudo update-alternatives --set phar.phar /usr/bin/phar.phar7.2
sudo update-alternatives --set phpize /usr/bin/phpize7.2
sudo update-alternatives --set php-config /usr/bin/php-config7.2

反之亦然,從 PHP 7.2 切換 => PHP 5.6

阿帕奇:-

sudo a2dismod php7.2
sudo a2enmod php5.6
sudo service apache2 restart

命令行:-

sudo update-alternatives --set php /usr/bin/php5.6
sudo update-alternatives --set phar /usr/bin/phar5.6
sudo update-alternatives --set phar.phar /usr/bin/phar.phar5.6
sudo update-alternatives --set phpize /usr/bin/phpize5.6
sudo update-alternatives --set php-config /usr/bin/php-config5.6

您可以使用以下命令行在兩個 PHP 版本之間切換。

例如

我想將PHP Version7.1切換到7.2我們可以使用以下命令

sudo a2dismod php7.1 &&  sudo update-alternatives --set php /usr/bin/php7.2 && sudo a2enmod php7.2 && sudo service apache2 restart

a2dismod用於禁用當前的 php 版本, a2enmod用於啟用該版本

這對我有用:-

sudo update-alternatives --set php /usr/bin/php7.4

只需將 PHP 版本更改為您需要的任何版本我已將其更改為 php7.4

在終端中輸入給定的命令..

要禁用選定的 PHP 版本...

    • 須藤 a2dismod php5
    • 須藤服務 apache2 重啟
  1. 用於啟用其他 PHP 版本....

    • 須藤 a2enmod php5.6
    • 須藤服務 apache2 重啟

它將升級Php版本,如果你想要版本降級,你可以通過PHP_INFO()看到它;

使用以下命令從 PHP 5.6 切換到 PHP 7.2:

sudo a2dismod php5.6 && sudo a2enmod php7.2 && sudo service apache2 restart

使用以下命令從 PHP 7.2 切換到 PHP 5.6:

sudo a2dismod php7.2 && sudo a2enmod php5.6 && sudo service apache2 restart

您可以使用這些開源 PHP 切換腳本,它們專為在 Ubuntu 16.04 LTS 中使用而設計。

https://github.com/rapidwebltd/php-switch-scripts

有一個setup.sh腳本,它為 PHP 5.6、7.0、7.1 和 7.2 安裝所有必需的依賴項。 完成后,您只需運行以下切換腳本之一即可更改 PHP CLI 和 Apache 2 模塊版本。

./switch-to-php-5.6.sh
./switch-to-php-7.0.sh
./switch-to-php-7.1.sh
./switch-to-php-7.2.sh

我制作了一個 bash 腳本來在 Ubuntu 上的不同 PHP 版本之間切換。

希望它可以幫助某人。

這是腳本:(將其保存在 /usr/local/bin/sphp.sh 中,不要忘記使用命令添加 +x 標志:sudo chmod +x /usr/local/bin/sphp.sh)

 #!/bin/bash # Usage if [ $# -ne 1 ]; then echo "Usage: sphp [phpversion]" echo "Example: sphp 7.2" exit 1 fi currentversion="`php -r \\"error_reporting(0); echo str_replace('.', '', substr(phpversion(), 0, 3));\\"`" newversion="$1" majorOld=${currentversion:0:1} minorOld=${currentversion:1:1} majorNew=${newversion:0:1} minorNew=${newversion:2:1} if [ $? -eq 0 ]; then if [ "${newversion}" == "${currentversion}" ]; then echo "PHP version [${newversion}] is already being used" exit 1 fi echo "PHP version [$newversion] found" echo "Switching from [php${currentversion}] to [php${newversion}] ... " printf "a2dismod php$majorOld.$minorOld ... " sudo a2dismod "php${majorOld}.${minorOld}" printf "[OK] and " printf "a2enmod php${newversion} ... " sudo a2enmod "php${majorNew}.${minorNew}" printf "[OK]\\n" printf "update-alternatives ... " sudo update-alternatives --set php "/usr/bin/php${majorNew}.${minorNew}" printf "[OK]\\n" sudo service apache2 restart printf "[OK] apache2 restarted\\n" else echo "PHP version $majorNew.$minorNew was not found." echo "Try \\`sudo apt install php@${newversion}\\` first." exit 1 fi echo "DONE!"

從 PHP 5.6 => PHP 7.1

$ sudo a2dismod php5.6
$ sudo a2enmod php7.1

對於舊的 linux 版本

 $ sudo service apache2 restart

最新版本

$ systemctl restart apache2

在 Ubuntu 18.04 上安裝 laravel 時,默認選擇 PHP 7.3.0RC3 安裝,但 laravel 和 symfony 不會正確安裝,抱怨缺少 php-xml 和 php-zip,即使它們已安裝。 您需要使用上述說明切換到 php 7.1,或者,

 sudo update-alternatives --set php /usr/bin/php7.1

現在,運行 laravel 新博客,將正確進行

請按照以下步驟操作:

i.e : your current version is : current_version = 7.3 , and you want to change it to : new_version = 7.2

1) sudo a2dismod php(current_version) 
2) sudo a2enmod php(new_version)
3) sudo update-alternatives --config php (here you need to select php version number) 
4) restart apache through : 
  sudo /etc/init.d/apache2 restart OR
  sudo service apache2 restart

您可以使用下面的腳本輕松地在 PHP 版本之間切換,我也包含了 phpize 配置。

https://github.com/anilkumararumulla/switch-php-version

下載腳本文件並運行

sh switch.sh

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM