作曲家使用较新版本的php
Posted
技术标签:
【中文标题】作曲家使用较新版本的php【英文标题】:composer to use newer version of php 【发布时间】:2013-03-18 09:20:11 【问题描述】:如何让作曲家使用我安装的更新版本的 php?我已经下载并在所有本地服务器中使用 php 5.4,但是当我下载 composer 时,它指向我的 mac 的默认 #!/usr/local/bin/env 版本,即 5.3.15。我尝试编辑composer可执行文件并更改使用的php,但它破坏了可执行文件。
我正在尝试使用 composer 安装 Laravel,因此下载了错误的版本。
这是我的 Composer 可执行文件顶部的样子,但下面有一堆奇怪的字符。
#!/usr/bin/env php
<?php
/*
* This file is part of Composer.
*
* (c) Nils Adermann <naderman@naderman.de>
* Jordi Boggiano <j.boggiano@seld.be>
*
* For the full copyright and license information, please view
* the license that is located at the bottom of this file.
*/
Phar::mapPhar('composer.phar');
define('COMPOSER_DEV_WARNING_TIME', 1366931166);
require 'phar://composer.phar/bin/composer';
laravel 项目的composer.json
"require":
"laravel/framework": "4.0.*@dev"
,
"autoload":
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
]
,
"scripts":
"post-update-cmd": "php artisan optimize"
,
"minimum-stability": "dev"
【问题讨论】:
你的php -v
输出是什么?
好吧,我在我的 bash_profile 中使用了“php”别名来指向我的新版本,所以它告诉我它是 5.4.11
所以如果你运行php composer.phar laravel
它不使用php 5.4.11?
我不确定你告诉我在哪里运行它......“命令'laravel'未定义'”
你能发布你的composer.json
吗?还有/COMPOSER/config.json
。
【参考方案1】:
我发现了问题。我将 composer.phar 文件移动到我的 /usr/local/bin/ 目录中,无论我做什么,它始终使用 5.3.15。我从我的 bin 中删除了可执行文件并重新下载了 .phar 并将其移至我的项目根目录并运行“php composer.phar install”,它看起来很有效。
为了清理我做了以下事情:
我将 composer.phar 留在了我的用户配置文件的根目录
/Users/davidadams/composer.phar
然后我打开了我的 .bash_profile 并添加了以下别名
alias composer='/usr/local/php5/bin/php /Users/davidadams/composer.phar'
这样我就可以在全球范围内使用它,我可以定义我想要使用的 php 版本。希望其他人会发现这很有用。
【讨论】:
#!/usr/bin/env php
- 此行指定使用的 PHP 版本。在命令行中查看env --help
以获得介绍,您也可以使用man env
阅读手册页。
您可能需要运行 source ~/.bash_profile
重新加载您的别名,然后它们才能工作【参考方案2】:
默认情况下,*nix 系统上的 composer 使用环境指定的 PHP 二进制/可执行文件。您可以在第一行看到shebang:
#!/usr/bin/env php
你可以告诉 shell 来代替更具体的 PHP 版本,例如:
#!/usr/local/php5/bin/php
在 Windows 系统上,如果您使用 composer 设置,您可以指定 PHP 二进制文件,然后设置将更改环境以满足这些需求。但是您也可以轻松地重写批处理文件 - 或 - 配置 Windows 操作系统以使用特定的 PHP 二进制文件执行 .phar 文件。
【讨论】:
对于windows用户,升级或降级在这里下载link。将其复制到您的 /wamp/bin/php.ini 文件中。然后去控制面板->系统和安全->系统->高级系统设置->环境变量,找到“路径”,编辑一下,找到“wamp/bin/php/(换成你刚下载完的版本)。重新启动 cmd 并再次尝试使用作曲家。为我工作..希望它也能帮助别人 这不会每次都被composer self-update
覆盖吗?
@YesBarry:如果你想编辑那个文件,是的。但请注意 /usr/bin/env php
解析为您想要使用的具体 php 版本。或者调用您想要的 PHP 版本并命令它打开系统提供它的作曲家:php -f "$(which composer)" -- list
。这绕过了解释器的外壳。【参考方案3】:
如果您不关心永久设置,以下命令对我有用:
/Applications/MAMP/bin/php/php5.6.27/bin/php /usr/local/bin/composer install
语法是:
PATH TO YOUR PHP VERSION PATH TO COMPOSER EXECUTABLE COMPOSER COMMAND
要知道可执行路径:which EXECUTABLE
会很有帮助。
例如:which composer
给出了我在上面的命令中使用的以下输出:
/usr/local/bin/composer
【讨论】:
很高兴它有帮助! :) 我正在使用 MAMP,而作曲家一直在尝试使用 OSX 版本。这对我来说很快【参考方案4】:sudo vim ~/.bash_profile
添加
export PATH="/Applications/MAMP/bin/php/php7.3.1/bin:$PATH"
在上面的路径中我有 php 7.3.1,所以把它改成你有的任何路径
然后按 Esc 然后 :wq
【讨论】:
以上是关于作曲家使用较新版本的php的主要内容,如果未能解决你的问题,请参考以下文章
在 Laravel 中安全地编辑第三方作曲家(供应商)包并防止在发布新版本的包时丢失自定义更改
为啥在较新版本的 Keycloak 中不允许使用身份验证流程中的脚本
如何在较新版本的 libreoffice 中使用 unoconv