簡體   English   中英

如何更改 Ubuntu 14.04 上的 php-cli 版本?

[英]How can I change php-cli version on Ubuntu 14.04?

我是使用 Linux 的新手,我在篡改時破壞了一些 php 設置。

如果我執行 php 腳本,其中包含: phpinfo(); 它顯示 php 版本為 5.6,但通過命令行,如果我運行php -v它會返回 7.0 版本。

我想讓兩個版本匹配。
如何修復我的命令行 PATH 以同時使用 php 5.6?

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

請參閱: 來源

從 PHP 7.1 => PHP 5.6

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

從 PHP 5.6 => PHP 7.1

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

您可以根據需要更改版本。

您可以查看本教程

問候!!

此解釋基於 Ubuntu 16.04,但預計也適用於其他版本

這里的大多數答案都是通過使用命令來操作 php-version

sudo update-alternatives --set ...

雖然該命令非常有用,但它從未解釋過它究竟做了什么。 下面是解釋,包括備份和一些選項:

獲取信息

  • 命令update-alternatives顯示或更改位於替代方向的符號鏈接,該方向在 Ubuntu 中通常定義為/etc/alternatives但也可以更改。
  • 可以使用命令update-alternatives --help顯示與update-alternatives相關的完整選項列表,可以使用man update-alternatives顯示更深入的解釋。
  • 由於命令update-alternatives是一個特殊文件夾中的主要更改符號鏈接,因此該文件夾的內容也可以使用常用命令顯示,以下所有以php開頭的項目都顯示:
 $ ls -al /etc/alternatives/php* lrwxrwxrwx 1 root root 15 Jan 19 02:58 /etc/alternatives/php -> /usr/bin/php7.2 lrwxrwxrwx 1 root root 31 Jan 19 02:58 /etc/alternatives/php.1.gz -> /usr/share/man/man1/php7.2.1.gz lrwxrwxrwx 1 root root 19 Jan 19 03:00 /etc/alternatives/php-cgi -> /usr/bin/php-cgi7.2 lrwxrwxrwx 1 root root 35 Jan 19 03:00 /etc/alternatives/php-cgi.1.gz -> /usr/share/man/man1/php-cgi7.2.1.gz lrwxrwxrwx 1 root root 23 Jan 19 03:00 /etc/alternatives/php-cgi-bin -> /usr/lib/cgi-bin/php7.2
  • 要使用命令update-alternatives顯示項目,請使用以下命令:
 $ update-alternatives --list php /usr/bin/php7.0 /usr/bin/php7.2
  • 要顯示更多詳細信息,您可以執行以下操作:
 $ update-alternatives --display php php - auto mode link best version is /usr/bin/php7.2 link currently points to /usr/bin/php7.2 link php is /usr/bin/php slave php.1.gz is /usr/share/man/man1/php.1.gz /usr/bin/php7.0 - priority 70 slave php.1.gz: /usr/share/man/man1/php7.0.1.gz /usr/bin/php7.2 - priority 72 slave php.1.gz: /usr/share/man/man1/php7.2.1.gz

最后,我們仍然想知道我們可以鏈接哪些 php 版本。 以下命令顯示/usr/bin/當前可用的 php 版本列表:

 $ ls -al /usr/bin/php* lrwxrwxrwx 1 root root 21 Jan 1 19:47 /usr/bin/php -> /etc/alternatives/php -rwxr-xr-x 1 root root 4385840 Apr 5 18:13 /usr/bin/php7.0 -rwxr-xr-x 1 root root 4875488 Apr 5 18:10 /usr/bin/php7.2 lrwxrwxrwx 1 root root 25 Jan 1 19:47 /usr/bin/php-cgi -> /etc/alternatives/php-cgi -rwxr-xr-x 1 root root 4279672 Apr 5 18:13 /usr/bin/php-cgi7.0 -rwxr-xr-x 1 root root 4769272 Apr 5 18:10 /usr/bin/php-cgi7.2 -rwxr-xr-x 1 root root 663 Feb 29 2016 /usr/bin/phpunit

備份資料

  • 要對這些符號鏈接進行信息備份,只需將列表保存在文件中,然后使用此命令將其保存在桌面上(根據需要調整文件名alternatives-php.txt ):
 $ echo "command: update-alternatives --list php" > ~/Desktop/alternatives-php.txt $ update-alternatives --display php >> ~/Desktop/alternatives-php.txt $ echo "command: update-alternatives --display php" >> ~/Desktop/alternatives-php.txt $ update-alternatives --display php >> ~/Desktop/alternatives-php.txt

如果您願意,您仍然可以添加命令ls的結果,如上所示:

 $ echo "command: ls -al /etc/alternatives/php*" >> ~/Desktop/alternatives-php.txt $ ls -al /etc/alternatives/php* >> ~/Desktop/alternatives-php.txt

...以及可用的 PHP 版本:

 $ echo "command: ls -al /usr/bin/php*" >> ~/Desktop/alternatives-php.txt $ ls -al /usr/bin/php* >> ~/Desktop/alternatives-php.txt

更改命令行的 PHP 版本

  • 如果我們首先過濾man -documents /etc/alternatives/php*/的列表,則包括 3 行:
 $ ls -al /etc/alternatives/php* lrwxrwxrwx 1 root root 15 Jan 19 02:58 /etc/alternatives/php -> /usr/bin/php7.2 lrwxrwxrwx 1 root root 19 Jan 19 03:00 /etc/alternatives/php-cgi -> /usr/bin/php-cgi7.2 lrwxrwxrwx 1 root root 23 Jan 19 03:00 /etc/alternatives/php-cgi-bin -> /usr/lib/cgi-bin/php7.2
  • 一方面,為整個系統提供一致的鏈接可能很有用,另一方面,系統上已經存在多個 php 版本的事實意味着它用於開發和 php 用於cliwebcgi可以配置不同。
    必須更改哪個符號鏈接?
    PHP for web 通常不使用/etc/alternatives中的符號鏈接進行配置,並且cli (命令行)通常不使用 cgi-version 或 cgi-configuration。 因此可以假設僅更改php的符號鏈接將適用於命令行,可能不需要更改php-cgiphp-cgi-bin 通常默認鏈接最新版本,因此下面的命令使用從/usr/bin/列表中獲取的舊版本:
 $ sudo update-alternatives --set php /usr/bin/php7.0 update-alternatives: using /usr/bin/php7.0 to provide /usr/bin/php (php) in manual mode

控制

檢查更改:

 $: php -v PHP 7.0.29-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Apr 5 2018 08:34:50) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies with Zend OPcache v7.0.29-1+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2017, by Zend Technologies

更改已被接受,使用的版本現在是舊版本。

  • 現在我們檢查手冊頁的版本:
 $: man php ... [SCROLL DOWN] VERSION INFORMATION This manpage describes php, version 7.0.29-1+ubuntu16.04.1+deb.sury.org+1. COPYRIGHT ...

這意味着 PHP 版本與手冊頁一致,命令man php返回當前 php 版本的正確描述,並且不需要手動調整手冊頁

這是更多交互方式:

update-alternatives --config php

您將看到所有可用版本的列表並選擇其中之一

您可以嘗試在終端命令行中將路徑設置為正確的 php 版本:

set PATH="/usr/bin/php5.6/bin:$PATH"

修改路徑以匹配您自己的 PHP 5.6 路徑(即,如果它是先安裝的,它可能類似於“/usr/bin/php”)。

最后的“$PATH”附加了當前路徑值,所以不要忘記使用它。

在改變之前檢查你有什么

 php -v

將所有內容更改為 php 7.2

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

普萊斯克

只是說,如果您的服務器是使用Plesk管理的(就像我在搜索這個問題時一樣),那么您可能在/usr/bin沒有更高版本的 PHP

在這種情況下,您的 PHP 版本將位於/opt/plesk/php因此您可以使用以下命令作為超級用戶(如果您不是超級用戶,請先運行su )來設置您的 PHP CLI 版本(以7.3 在這個例子中):

echo "alias php='/opt/plesk/php/7.3/bin/php'" >> ~/.bashrc

注銷並重新登錄,然后......瞧!

筆記

  1. 您必須具有超級用戶權限才能運行此
  2. 如果您想將 CLI 設置為不同的版本,那么只需將命令中的7.3替換為您想要的任何版本(在 OP 的情況下,這將是5.6
  3. 如果您想檢查 Plesk 有哪些版本可供您使用,只需運行: ls /opt/plesk/php

來源: Plesk 支持

暫無
暫無

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

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