作曲家使用较新版本的PHP

Dav*_*vid 20 php laravel composer-php

如何让作曲家使用我安装的更新版本的php?我已下载并在所有本地服务器上使用php 5.4,但是当我下载作曲家时,它指向我的mac的默认#!/ usr/local/bin/env版本,即5.3.15.我尝试编辑composer可执行文件并更改使用的php,但它破坏了可执行文件.

我正在尝试使用composer来安装Laravel,并因此而下载了错误的版本.

这就是我的作曲家可执行文件的顶部看起来像但是下面有一堆奇怪的字符.

#!/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';
Run Code Online (Sandbox Code Playgroud)

作为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"
}
Run Code Online (Sandbox Code Playgroud)

小智 17

如果你不关心永久设置,下面的命令对我有用:

/Applications/MAMP/bin/php/php5.6.27/bin/php /usr/local/bin/composer install
Run Code Online (Sandbox Code Playgroud)

语法是:

{PATH TO YOUR PHP VERSION} {PATH TO COMPOSER EXECUTABLE} {COMPOSER COMMAND}
Run Code Online (Sandbox Code Playgroud)

要知道可执行文件路径:which {EXECUTABLE}可能非常有用.例:which composer给出了我在上面命令中使用的以下输出:

/usr/local/bin/composer
Run Code Online (Sandbox Code Playgroud)


Dav*_*vid 13

我发现了这个问题.我将composer.phar文件移动到我的/ usr/local/bin /目录,无论我做了什么,它总是使用5.3.15.我从我的bin中删除了可执行文件并重新加载了.phar并将其移动到我的项目root并运行"php composer.phar install",它看起来像是有效的.

为了清理,我做了以下事情:

我把composer.phar留在了我的用户个人资料的根目录下

/Users/davidadams/composer.phar
Run Code Online (Sandbox Code Playgroud)

然后我打开了我的.bash_profile并添加了以下别名

alias composer='/usr/local/php5/bin/php /Users/davidadams/composer.phar'
Run Code Online (Sandbox Code Playgroud)

这样我可以全局使用它,我可以定义我想要使用的php版本.希望其他人会觉得这很有用.

  • 您可能需要运行`source~/.bash_profile`来重新加载别名才能生效 (2认同)

hak*_*kre 5

默认情况下,*nix系统上的composer使用环境指定的PHP二进制/可执行文件.你可以看到第一行是shebang:

#!/usr/bin/env php
Run Code Online (Sandbox Code Playgroud)

您可以告诉shell反对更具体的PHP版本,例如:

#!/usr/local/php5/bin/php
Run Code Online (Sandbox Code Playgroud)

在Windows系统上,如果使用composer设置,则可以指定PHP二进制文件,然后设置将更改环境以满足这些需求.但您也可以轻松地重写批处理文件 - 或者 - 配置Windows操作系统以使用特定的PHP二进制文件执行.phar文件.