roo*_*ays 34 php linux env command-line-interface laravel
所以我安装了三个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
Run Code Online (Sandbox Code Playgroud)
但是这会引发错误,因为Laravel要求PHP> 5.5.9并且默认php解释器为5.4.所以我发出另一个命令:
$ /usr/bin/php5.6 /usr/bin/composer create-project laravel/laravel --prefer-dist
Run Code Online (Sandbox Code Playgroud)
这让我更进了一步,但随后Laravel的一些安装后命令composer.json发挥作用,安装崩溃了.
这是因为composer.json命令看起来像这样:
"post-install-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
Run Code Online (Sandbox Code Playgroud)
如您所见,再次使用"默认"解释器!
现在,正确的PHP文件从以下shebang开始:
#!/usr/bin/env php
Run Code Online (Sandbox Code Playgroud)
这是一个很好的功能,因为PHP解释器可以在不同系统的不同位置找到.不幸的是,在这种情况下,env命令返回它在$PATH环境变量中找到的第一个可执行文件的路径.
我怎么可能改变当前的会话环境或执行什么样的技巧,以便执行整个Laravel安装过程php命令/usr/bin/php5.6而不是/usr/bin/php?
我不想改变$PATH变量或修改文件一样composer,composer.json或者Laravel的CLI工具artisan.
编辑:还假设我想从常规用户帐户执行此操作(即没有root权限).
小智 36
也许你可以尝试修复环境!
$ php -v
PHP 5.4.x (cli) ...
$ set PATH="/usr/lib64/php5.6/bin:$PATH"
$ php -v
PHP 5.6.x (cli) ...
Run Code Online (Sandbox Code Playgroud)
或者,如果您不想修改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) ...
Run Code Online (Sandbox Code Playgroud)
小智 29
可以使用以下命令找到默认的PHP可执
$ which php
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,它是特定PHP版本的链接:
lrwxrwxrwx 1 root root 21 aug 15 2016 /usr/bin/php -> /usr/bin/php7.1
Run Code Online (Sandbox Code Playgroud)
要将其更改为其他版本,只需将其重新链接到另一个版本
$ sudo rm /usr/bin/php
$ sudo ln -s /usr/bin/php5.6 /usr/bin/php
Run Code Online (Sandbox Code Playgroud)
在重新链接之前,您必须确保安装目标PHP版本.
Ale*_*rei 10
确定当前通用php命令的位置以及它指向的二进制文件which php.
它将为您提供一个符号链接的路径,就像您在问题中提到的那样
/usr/bin/php -> /usr/lib64/php5.4/bin/php
编辑符号链接以指向您现在想要的php版本,请参阅 https://unix.stackexchange.com/questions/88824/how-can-i-edit-symlinks
完成后,只需撤消该过程即可.
更新:您还可以alias通过编辑~/.bashrc和添加以下内容为当前用户添加
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
Run Code Online (Sandbox Code Playgroud)
这显然只适用于简单的脚本.对于任何更大的东西(作曲家,工匠等),你将不得不改变PATH变量.
要更改Apache服务器正在使用的版本,您只需执行以下操作:
root@debian:~# a2dismod php5 && a2enmod php7.0
Module 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
Run Code Online (Sandbox Code Playgroud)
如果你想使用较低的PHP版本,反之亦然.
提及它以防有人在Debian上遇到类似的问题.