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

Posted

技术标签:

【中文标题】如何在 Ubuntu 14.04 上更改 php-cli 版本?【英文标题】:How can I change php-cli version on Ubuntu 14.04? 【发布时间】:2017-08-19 19:45:01 【问题描述】:

我是使用 Linux 的新手,我在篡改时破坏了一些 php 设置。

如果我执行一个包含:phpinfo(); 的 php 脚本,它会将 php 版本显示为 5.6, 但是通过命令行,如果我运行 php -v 它会返回 7.0 版本。

我想让两个版本都匹配。 如何修复我的命令行 PATH 以也使用 php 5.6?

【问题讨论】:

检查两个ini文件 在不更改或添加任何细节的情况下更清楚地说明问题。英语不太可能是作者的第一语言。希望这会有所帮助。 【参考方案1】:
sudo update-alternatives --set php /usr/bin/php5.6

请看:Source

【讨论】:

为此我爱你,直到死亡将我们分开 只有一个版本需要安装更多怎么办?【参考方案2】:

从 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

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

你可以查看这个tutorial

问候!!

【讨论】:

【参考方案3】:

这里是更具交互性的方式:

update-alternatives --config php

您将看到所有可用版本的列表并选择其中一个

【讨论】:

应该是新的答案,这样会更好,而且更不容易出错和耗时 如果我没有更多选择怎么办?此命令显示通知:在链接组php中只有一种选择(提供/usr/bin/php):/usr/bin/php7.2 没有配置。 @Čamo,update-alternatives 允许您从系统中安装的列表中设置默认 php 版本,所以...您是否安装了 php7.2 以外的其他东西?【参考方案4】:

此解释基于 Ubuntu 16.04,但预计也适用于其他版本

这里的大多数答案都是通过使用命令来操作 php-version

sudo update-alternatives --set ...

虽然该命令非常有用,但从未解释过它的确切作用。下面是解释,包括备份和一些选项:

获取信息

命令update-alternatives 正在显示或更改位于另一个方向的符号链接,在Ubuntu 中通常定义为/etc/alternatives,但也可以更改。 与update-alternatives 相关的选项的完整列表可以使用命令update-alternatives --help 显示,更深入的解释可以使用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 用于cli、@ 987654344@ 和 cgi 可以进行不同的配置。必须更改哪个符号链接? 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 版本的正确描述,无需手动调整手册页.

【讨论】:

这很好。我只有 PHP 7.0,所以要安装其他的。 真正的 MVP 会做出这样的详细答案 @Sunhat 谢谢,对答案的投票表示赞赏:) 什么我只有一个版本,需要添加其他更新版本?不知道该怎么做。我应该从哪里复制到哪里? @Čamo 你可以用sudo apt list php*列出所有的ubuntu版本。【参考方案5】:

您可以尝试在终端命令行中设置正确的php版本的路径:

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

修改路径以匹配您自己的 PHP 5.6 路径(即,如果先安装,可能类似于“/usr/bin/php”)。

末尾的“$PATH”附加了当前路径值,所以不要忘记使用它。

【讨论】:

【参考方案6】:

在改变之前检查你有什么

 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

【讨论】:

【参考方案7】:

Plesk

只是说,如果您的服务器是使用 Plesk 管理的(就像我在搜索这个问题时一样),那么您可能在/usr/bin中没有更高版本的 PHP

在这种情况下,您的 PHP 版本将位于 /opt/plesk/php,因此您可以以超级用户身份使用以下命令(如果您不是超级用户,请先运行 su)来设置您的 PHP CLI 版本(在本例中为 7.3):

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

退出并重新登录,然后....瞧!

注意事项

    您必须拥有超级用户权限才能运行此程序 如果您想将 CLI 设置为不同的版本,只需将命令中的 7.3 替换为您想要的任何版本(在 OP 的情况下,这将是 5.6 如果您想查看 Plesk 有哪些版本可供您使用,只需运行:ls /opt/plesk/php

来源:Plesk Support

【讨论】:

以上是关于如何在 Ubuntu 14.04 上更改 php-cli 版本?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Ubuntu Linux 14.04 LTS 上安装php7

如何在 Ubuntu Linux 14.04 LTS 上安装php7

如何在Ubuntu 14.04上利用jexus搭建支持php+mysql数据库的网站服务

php 脚本在 Ubuntu 14.04 服务器上运行,phpmyadmin 没有

sh 使用PHP7在Ubuntu 14.04上安装MongoDB

在 Ubuntu 14.04 上选择 php 版本(php vs php5)