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

2024-11-06 08:34:00
admin
原创
28
摘要:问题描述:我是 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

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

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用