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

2024-11-05 08:38:00
admin
原创
137
摘要:问题描述:我是 Linux 新手,在篡改时破坏了一些 php 设置。如果我执行包含以下内容的 php 脚本:phpinfo();它会显示 php 版本为 5.6,但通过命令行运行,php -v它会返回版本 7.0。我希望两个版本都匹配。 如何修复命令行 PATH 以使用 php 5.6?解决方案 1:sud...

问题描述:

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

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

我希望两个版本都匹配。

如何修复命令行 PATH 以使用 php 5.6?


解决方案 1:

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

请参阅:来源

解决方案 2:

以下是更具交互性的方式:

update-alternatives --config php

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

解决方案 3:

从 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

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

你可以查看这个教程

问候!!

解决方案 4:

此解释基于 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文档,列表中/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 版本或 cgi 配置。因此可以假定仅更改 的符号链接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 版本的正确描述,不需要对手册页进行任何手动调整

解决方案 5:

改变之前检查一下你有什么

 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

解决方案 6:

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

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

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

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

解决方案 7:

普莱斯

只是说,如果你的服务器使用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 支持

解决方案 8:

对于 PLESK 这样做:

$ which php
/usr/bin/php
$ mv /usr/bin/php /usr/bin/php-backup
$ ln -s /opt/plesk/php/7.3/bin/php /usr/bin/php
$ php -v

要查看有哪些可供选择的选项,请执行以下操作:

/usr/local/psa/admin/bin/php_handlers_control --list

如何更改 PHP Cli 版本

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1136  
  IPD(Integrated Product Development,集成产品开发)流程是一种广泛应用于高科技和制造业的产品开发方法论。它通过跨职能团队的紧密协作,将产品开发周期缩短,同时提高产品质量和市场成功率。在IPD流程中,CDCP(Concept Decision Checkpoint,概念决策检查点)是一个关...
IPD培训课程   90  
  研发IPD(集成产品开发)流程作为一种系统化的产品开发方法,已经在许多行业中得到广泛应用。它不仅能够提升产品开发的效率和质量,还能够通过优化流程和资源分配,显著提高客户满意度。客户满意度是企业长期成功的关键因素之一,而IPD流程通过其独特的结构和机制,能够确保产品从概念到市场交付的每个环节都围绕客户需求展开。本文将深入...
IPD流程   84  
  IPD(Integrated Product Development,集成产品开发)流程是一种以跨职能团队协作为核心的产品开发方法,旨在通过优化资源分配、提高沟通效率以及减少返工,从而缩短项目周期并提升产品质量。随着企业对产品上市速度的要求越来越高,IPD流程的应用价值愈发凸显。通过整合产品开发过程中的各个环节,IPD...
IPD项目管理咨询   92  
  跨部门沟通是企业运营中不可或缺的一环,尤其在复杂的产品开发过程中,不同部门之间的协作效率直接影响项目的成败。集成产品开发(IPD)作为一种系统化的项目管理方法,旨在通过优化流程和增强团队协作来提升产品开发的效率和质量。然而,跨部门沟通的复杂性往往成为IPD实施中的一大挑战。部门之间的目标差异、信息不对称以及沟通渠道不畅...
IPD是什么意思   89  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用