所以我安装了三个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
我想使用作曲家安装Laravel框架:
$ composer create-project laravel/laravel --prefer-dist
但是,这会引发错误,因为Laravel需要PHP> 5.5.9并且默认php解释器是 5.4 。所以我发出另一个命令:
php
$ /usr/bin/php5.6 /usr/bin/composer create-project laravel/laravel --prefer-dist
这使我更进一步,但是随后Laravel的一些安装后命令composer.json开始起作用,安装崩溃。
composer.json
这是由于事实,composer.json命令看起来像这样:
"post-install-cmd": [ "php artisan clear-compiled", "php artisan optimize" ],
如您所见,再次使用“默认”解释器!
现在,正确的PHP文件以以下shebang开头:
#!/usr/bin/env php
这是一个很好的功能,因为可以在不同系统的不同位置找到PHP解释器。不幸的是,在这种情况下,env命令将返回其在$PATH环境变量中找到的第一个可执行文件的路径。
env
$PATH
我怎么可能改变当前的会话环境或执行什么样的技巧,以便执行整个Laravel安装过程php命令/usr/bin/php5.6而不是调用/usr/bin/php?
我不想改变$PATH变量或修改文件一样composer,composer.json或者Laravel的CLI工具artisan。
composer
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) ...