【问题标题】:installing composer on a shared host在共享主机上安装作曲家
【发布时间】:2015-07-01 02:45:56
【问题描述】:

我第一次尝试在我的共享主机上安装 composer。

当我运行curl -sS https://getcomposer.org/installer | php 我正在成功安装 Composer
用户:php composer.phar

当我运行php composer.phar 时,我得到了这个交战错误:

警告:Composer 应该通过 PHP 的 CLI 版本调用,而不是 cgi-fcgi SAPI

关于如何解决这个问题的任何想法?为什么我会收到这个错误? :(

当我运行 php -v 时,我得到了返回

PHP 5.4.39 (cgi-fcgi) (built: Mar 25 2015 14:20:20)  
Copyright (c) 1997-2014 The PHP Group  
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies  
    with Zend Guard Loader v3.3, Copyright (c) 1998-2013, by Zend Technologies

我是否需要使用 CLI 版本运行它,如果需要,我该怎么做?

任何帮助都会很好,谢谢。

【问题讨论】:

  • 我已经尝试从链接安装 $ php -d register_argc_argv=1 "./composer.phar" 并且我得到相同的错误警告:应该通过 PHP 的 CLI 版本调用 Composer,而不是cgi-fcgi SAPI ....它还说使用 php-cli vendor/bin/phpunit 来运行 PHPUnit。我该怎么做?...谢谢你的帮助
  • 请先尝试php-cli -v,然后再尝试php-cli composer.phar
  • @JensA.Koch 你应该把你的评论作为答案,因为你应该得到学分:)

标签: php cgi composer-php


【解决方案1】:

我通过显式调用它要求的 PHP 版本解决了这个问题。请记住,在共享服务器环境中,通常会运行多个版本的 PHP,即使您可能已在 cPanel 配置中设置了默认值,bash 命令通常也会解析为另一个(较低)版本。

首先,我创建了一个bin 目录并将composer.phar 移入其中。然后,我将此别名添加到我的 .bash_profile 中,它就像一个魅力:

alias composer="/usr/php/54/usr/bin/php-cli ~/bin/composer.phar"

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    由于现在可以通过 WHM 使用 Composer,您可以使用它来查找它:

    which composer
    

    这为我返回了路径“/opt/cpanel/composer/bin/composer”。如果这没有返回任何内容,则忽略此答案的其余部分,因为 Composer 在系统级别对您不可用。

    您现在可以使用 php-cli 使用 Composer 的绝对路径调用它:

    php-cli /opt/cpanel/composer/bin/composer install
    php-cli /opt/cpanel/composer/bin/composer update
    php-cli /opt/cpanel/composer/bin/composer require whatever/example
    

    但是,如果您的系统声称未找到此名称,您可能需要使用别名 php-cli。这在很大程度上取决于 PHP 在 WHM 服务器上的部署方式。您可以通过将用户别名添加到“.bashrc”文件的末尾来执行此操作,如下所示:

    alias php-cli=/opt/cpanel/ea-php72/root/usr/bin/php
    

    将ea-php72 替换为您要使用的PHP 版本。在 shell 中将其作为命令提交以使其立即可用,否则它将在您打开下一个 Bash 会话时可用。

    如果您想仅使用 composer 就可以使用它,您可以在“.bashrc”中再次创建此别名:

    alias composer=/opt/cpanel/ea-php72/root/usr/bin/php /opt/cpanel/composer/bin/composer
    

    或者

    php-cli $(which composer) ...
    

    【讨论】:

      【解决方案3】:

      安装的 php 版本的位置因主机而异。尝试通过以下方式找到它们:

      locate /bin/php
      

      对我来说,这列出了所有 php 版本,然后我可以将 php 替换为,例如:

      /usr/bin/php71-cli
      

      访问命令行界面版本而不是默认的 cgi 版本。然后如@Diggery 所述,您可以创建一个别名。

      alias composer='/usr/bin/php71-cli bin/composer.phar'
      

      StackOverflow 上有很多关于如何测试 cli 安装的建议,但以上是唯一对我有用的建议。

      【讨论】:

        【解决方案4】:

        我制作了一个脚本来处理作曲家/供应商的变化。该脚本适用于仅 ftp 的服务器,仅发送/删除更改的文件。也许有人会觉得它有用。

        https://github.com/psad73/tune-composer

        【讨论】:

          猜你喜欢
          • 2017-07-07
          • 2016-09-07
          • 2018-06-15
          • 1970-01-01
          • 1970-01-01
          • 2011-01-21
          • 2018-08-05
          • 2013-07-05
          相关资源
          最近更新 更多