对一个命令使用不同的PHP版本CLI可执行文件
所以我安装了三个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
我想使用作曲家安装Laravel框架:
$ composer create-project laravel/laravel --prefer-dist
但是,这会引发错误,因为Laravel需要PHP> 5.5.9并且默认php
解释器是 。所以我发出另一个命令:
$ /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
这是一个很好的功能,因为可以在不同系统的不同位置找到PHP解释器。不幸的是,在这种情况下,env
命令将返回其在$PATH
环境变量中找到的第一个可执行文件的路径。
我怎么可能改变当前的会话环境或执行什么样的技巧,以便执行整个Laravel安装过程php
命令/usr/bin/php5.6
而不是调用/usr/bin/php
?
我不想改变$PATH
变量或修改文件一样composer
,composer.json
或者Laravel的CLI工具artisan
。
编辑:还假设我想从普通用户帐户执行此操作(即没有root权限)。
回答:
也许您可以尝试修复环境!
$ php -vPHP 5.4.x (cli) ...
$ set PATH="/usr/lib64/php5.6/bin:$PATH"
$ php -v
PHP 5.6.x (cli) ...
或者,如果您不想为您的Shell会话修改PATH,则可以仅将更改范围包括在当前命令中:
$ php -vPHP 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版本CLI可执行文件 的全部内容, 来源链接: utcz.com/qa/414937.html