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

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

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

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

【问题讨论】:

  • 检查两个ini文件
  • 在不更改或添加任何细节的情况下更清楚地说明问题。英语不太可能是作者的第一语言。希望这会有所帮助。

标签: php linux ubuntu


【解决方案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
        

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

        注意事项

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

        来源:Plesk Support

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-10-13
          • 2019-09-10
          • 2021-10-05
          • 1970-01-01
          • 2021-02-17
          相关资源
          最近更新 更多