[英]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。
阿帕奇:
$ 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。
阿帕奇:
$ 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.04 ( 18.04和20.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.0
和PHP 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
檢查更改:
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
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 Version
從7.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 版本...
用於啟用其他 PHP 版本....
它將升級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.