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

Ali*_*Koç 42 php linux ubuntu

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

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

我希望两个版本都匹配.
我如何修复我的命令行PATH也使用PHP 5.6?

小智 120

sudo update-alternatives --set php /usr/bin/php5.6
Run Code Online (Sandbox Code Playgroud)

请参阅:来源

  • 我为此爱你,** TILL DEATH DO US APART ** (6认同)
  • 这改变了 PHP 的 CLI 版本,但浏览器版本仍然相同。 (2认同)

Rad*_*dez 29

从PHP 7.1 => PHP 5.6

sudo update-alternatives --set php /usr/bin/php5.6
Run Code Online (Sandbox Code Playgroud)

从PHP 5.6 => PHP 7.1

sudo update-alternatives --set php /usr/bin/php7.1
Run Code Online (Sandbox Code Playgroud)

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

您可以查看本教程

问候!!


Dav*_*vid 22

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

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

sudo update-alternatives --set ...
Run Code Online (Sandbox Code Playgroud)

虽然命令非常有用,但它从未解释过它的确切功能.这里有解释,包括备份和一些选项:

获取信息

  • 该命令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
Run Code Online (Sandbox Code Playgroud)
  • update-alternatives使用此命令显示项目使用此命令:
$ update-alternatives --list php  
/usr/bin/php7.0  
/usr/bin/php7.2
Run Code Online (Sandbox Code Playgroud)
  • 要显示更多细节,您可以执行此操作:
$ 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
Run Code Online (Sandbox Code Playgroud)

最后,我们仍然想知道我们可以链接哪些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
Run Code Online (Sandbox Code Playgroud)

备份信息

  • 要对这些符号链接进行信息备份,只需将列表保存在文件中,然后使用此命令将其保存在桌面上(根据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  
Run Code Online (Sandbox Code Playgroud)

如果你喜欢你仍然可以添加命令的结果,ls如上所示:

$ echo "command: ls -al /etc/alternatives/php*" >> ~/Desktop/alternatives-php.txt
$ ls -al /etc/alternatives/php* >> ~/Desktop/alternatives-php.txt
Run Code Online (Sandbox Code Playgroud)

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

$ echo "command: ls -al /usr/bin/php*" >> ~/Desktop/alternatives-php.txt
$ ls -al /usr/bin/php* >> ~/Desktop/alternatives-php.txt
Run Code Online (Sandbox Code Playgroud)

更改命令行的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
Run Code Online (Sandbox Code Playgroud)
  • 虽然一方面为整个系统提供一致的链接可能是有用的另一方面,系统上已经存在的几个php版本意味着它用于开发和php cli,web并且cgi可以以不同的方式配置.
    哪个符号链接必须更改?
    用于Web的PHP通常不是通过使用符号链接来配置的,/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
Run Code Online (Sandbox Code Playgroud)

控制

检查更改:

$: 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
Run Code Online (Sandbox Code Playgroud)

该更改已被接受,现在使用的版本较旧.

  • 现在我们检查man-page编写的版本:
$: man php
... [SCROLL DOWN]
VERSION INFORMATION
   This manpage describes php, version 7.0.29-1+ubuntu16.04.1+deb.sury.org+1.
COPYRIGHT
...
Run Code Online (Sandbox Code Playgroud)

这意味着PHP版本与man-page一致,并且该命令man php返回当前php-version的正确描述,并且不需要关于man-page的手动调整.


小智 13

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

update-alternatives --config php
Run Code Online (Sandbox Code Playgroud)

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

  • 应该是新的答案,这样更好,并且不易出错且耗时 (5认同)