所以我有安装了三个PHP版本的Gentoo框(不知道原因):
/usr/bin/php
– > /usr/lib64/php5.4/bin/php
/usr/bin/php5.5
– > /usr/lib64/php5.5/bin/php
/usr/bin/php5.6
– > /usr/lib64/php5.4/bin/php
我想用composer安装Laravel框架 :
$ composer create-project laravel/laravel --prefer-dist
然而,这会引发错误,因为Laravel需要PHP> 5.5.9,默认的php
解释器是5.4 。 所以我发出另一个命令:
$ /usr/bin/php5.6 /usr/bin/composer create-project laravel/laravel --prefer-dist
这需要我更进一步,但是随后一些来自Laravel的composer.json
的安装后命令发挥作用,并且安装崩溃。
这是因为composer.json
命令是这样的:
"post-install-cmd": [ "php artisan clear-compiled", "php artisan optimize" ],
正如你所看到的,“默认”解释器再次使用!
现在,正确的PHP文件从下面的shebang开始:
#!/usr/bin/env php
这是很好的function,因为PHP解释器可以在不同系统的不同位置下find。 不幸的是,在这种情况下, env
命令返回它在$PATH
环境variables中find的第一个可执行文件的$PATH
。
我怎么可能改变当前的会话环境或者执行整个Laravel安装过程的执行方式? php
命令会调用/usr/bin/php5.6
而不是/usr/bin/php
?
我不想更改$PATH
variables或修改composer
, composer.json
或Laravel CLI实用artisan
。
编辑:也假设我想从常规的用户帐户(即没有root权限)这样做。
也许你可以尝试修复环境!
$ php -v PHP 5.4.x (cli) ... $ set PATH="/usr/lib64/php5.6/bin:$PATH" $ php -v PHP 5.6.x (cli) ...
或者,如果您不想修改shell会话的PATH,则只能对当前命令的范围进行限定:
$ php -v PHP 5.4.x (cli) ... $ env PATH="/usr/lib64/php5.6/bin:$PATH" php -v PHP 5.6.x (cli) ... $ php -v PHP 5.4.x (cli) ...
确定当前的通用php
命令在哪里,以及哪个二进制文件指向which php
。
它会给你一个像你提到的问题的符号链接的路径
/usr/bin/php -> /usr/lib64/php5.4/bin/php
编辑符号链接,指出你现在想要哪个php版本,看到这里https://unix.stackexchange.com/questions/88824/how-can-i-edit-symlinks
当你完成后,只是扭转过程。
更新:您还可以通过编辑~/.bashrc
并添加以下内容来为当前用户添加一个alias
alias php='/usr/bin/php5.6'
看看这个工作
自从PHP7出现以来,Debian Linux在默认情况下(如果安装两个版本的话)在/ usr / bin中为PHP版本5和7创建了不同的可执行文件。
从命令行调用这些不同的版本现在就像以前一样简单:
kkarski@debian:~ $ php5 -v PHP 5.6.26-0+deb8u1 (cli) (built: Sep 21 2016 12:37:50) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies kkarski@debian:~ $ php -v PHP 7.0.9-1~dotdeb+8.1 (cli) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.9-1~dotdeb+8.1, Copyright (c) 1999-2016, by Zend Technologies
这显然只适用于简单的脚本。 对于任何更大的(作曲家,工匠等),你将不得不改变PATH变量。
要改变你的Apache服务器正在使用的版本,你需要做的是:
root@debian:~# a2dismod php5 && a2enmod php7.0 modulee php5 disabled. To activate the new configuration, you need to run: service apache2 restart Considering conflict php5 for php7.0: Enabling module php7.0. To activate the new configuration, you need to run: service apache2 restart
反之亦然,如果你想使用较低的PHP版本。
如果有人在Debian上遇到类似的问题,可以提一下。
默认的PHP可执行文件可以使用:
$ which php
在大多数情况下,它是链接到特定的PHP版本:
lrwxrwxrwx 1 root root 21 aug 15 2016 /usr/bin/php -> /usr/bin/php7.1
要将其更改为其他版本,只需将其重新链接到另一个版本
$ sudo rm /usr/bin/php $ sudo ln -s /usr/bin/php5.6 /usr/bin/php
在重新链接之前,您必须确保已安装目标PHP版本。