我是使用Linux的新手,在篡改时破坏了一些php设置。
如果我执行一个包含以下phpinfo();
内容的php脚本:它显示的php版本为5.6,但是如果通过命令行运行,php -v
它将返回7.0版本。
我想要两个版本都匹配。
如何修复命令行路径以同时使用php 5.6?
Answers:
从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
您可以根据需要更改版本。
您可以查看本教程
问候!!
这里的大多数答案都通过使用命令来操作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
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
cli
,web
并且cgi
可以进行不同的配置。/etc/alternatives
并且cli
(命令行)通常不使用cgi-version或cgi-configuration。因此,可以假设仅更改for的符号链接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版本的正确描述,并且无需手动调整手册页。
更改之前先检查一下
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
只是说,如果您的服务器是使用Plesk进行管理的(就像我正在搜索此问题时一样),则您可能没有更高版本的PHP/usr/bin
在这种情况下,将位于您的PHP版本中,/opt/plesk/php
因此您可以作为超级用户使用以下命令(su
如果您不是超级用户,请首先运行)来设置PHP CLI版本(在本示例中为7.3):
echo "alias php='/opt/plesk/php/7.3/bin/php'" >> ~/.bashrc
注销并重新登录,然后..瞧!
7.3
命令中的替换为所需的任何版本(对于OP,这将是5.6
ls /opt/plesk/php
资料来源:Plesk支持