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


69

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

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

我想要两个版本都匹配。
如何修复命令行路径以同时使用php 5.6?


检查两个ini文件
Chetan Ameta

在不更改或添加任何细节的情况下,对问题的措词更清晰。英语不太可能是作者的母语。希望这可以帮助。
不可分割

Answers:



38

从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

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

您可以查看本教程

问候!!


30

该说明基于Ubuntu 16.04,但也预期适用于其他版本

这里的大多数答案都通过使用命令来操作php版本

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版本。以下命令显示了中当前可用的php版本的列表/usr/bin/

$ 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用于cliweb并且cgi可以进行不同的配置。
    哪个符号链接必须更改?
    用于Web的PHP通常不通过使用符号链接进行配置,/etc/alternatives并且cli(命令行)通常不使用cgi-version或cgi-configuration。因此,可以假设仅更改for的符号链接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,所以要安装其他的。
kJamesy

真正的MVP会做出类似这样的详细答案
Sunhat'May

@Sunhat谢谢,感谢您的答复:)
David

26

这是一种更具交互性的方式:

update-alternatives --config php

您会看到所有可用版本的列表,然后选择其中一个


4
应该是新的答案,用这种方法要好得多,并且减少错误发生的时间和时间

3

更改之前先检查一下

 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

2

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

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

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

最后的“ $ PATH”会附加当前路径值,因此请不要忘记使用它。


1

普列斯克

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

在这种情况下,将位于您的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支持

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.