我刚开始使用Linux并且在更改一些php设置时出现了问题。
如果我执行一个包含 phpinfo();
的php脚本,它会显示php版本为5.6,
但是通过命令行运行 php -v
,它会返回7.0版本。
我想让这两个版本匹配。
如何修复我的命令行PATH以便同时使用php 5.6?
sudo update-alternatives --set php /usr/bin/php5.6
请参考:源。这里是更交互式的方式:
update-alternatives --config php
你将看到所有可用版本的列表,并选择其中一个。
从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 --display [name]
$ 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 /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
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版本意味着它被用于开发,并且可以为cli、web和cgi配置不同的php。/etc/alternatives
和cli
(命令行)中使用符号链接来配置Web的PHP,而通常不会使用cgi版本或cgi配置来使用cli。因此,可以假定仅更改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页面一致,执行命令man php
返回当前PHP版本的正确描述,并且没有需要进行手动调整的man页面相关内容。sudo apt list php*
列出您Ubuntu版本的所有PHP版本。 - David更改之前,请检查您拥有的内容
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
您可以尝试在终端命令行上设置正确的PHP版本路径:
set PATH="/usr/bin/php5.6/bin:$PATH"
修改路径以匹配您自己的PHP 5.6路径(例如,如果它是首先安装的,则可能类似于“/usr/bin/php”)。
在结尾的"$PATH"附加当前路径值,因此不要忘记使用它。
如果您的服务器使用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
$ 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