如何在 Ubuntu 14.04 上更改 php-cli 版本?
- 2024-11-05 08:38:00
- admin 原创
- 35
问题描述:
我是 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 用于
cli
,web
并且cgi
可以进行不同的配置。
哪个符号链接必须更改?
用于 Web 的 PHP 通常不通过使用/etc/alternatives
和中的符号链接进行配置cli
(命令行)通常不使用 cgi 版本或 cgi 配置。因此可以假定仅更改 的符号链接php
即可用于 命令行,而更改php-cgi
和php-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
注销并重新登录,然后......瞧!
笔记
您必须具有超级用户权限才能运行此程序
如果你想将 CLI 设置为不同的版本,那么只需将
7.3
命令中的 替换为你想要的版本(在 OP 的例子中,这将是5.6
如果您想检查 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 版本
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件