在共享主机上安装Composer

9
我第一次在共享主机上尝试安装composer。当我运行curl -sS https://getcomposer.org/installer | php时,会得到Composer成功安装的消息和用户提示:php composer.phar。但是,当我运行php composer.phar时,会收到这个警告错误:Composer应该通过CLI版本的PHP而不是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版本来运行这个吗?如果是的话,我该如何操作?

任何帮助都将不胜感激,谢谢。


1
你试过这个了吗?https://github.com/composer/composer/issues/1513#issuecomment-45207197 - Phil Walton
PHPUnit已安装吗?https://phpunit.de/manual/current/en/installation.html - Phil Walton
谢谢,我会尝试并告诉你结果。抱歉,我是新手 :) - Stuart Compaan
7
请尝试运行 php-cli -v,然后运行 php-cli composer.phar - Jens A. Koch
2
@JensA.Koch,你应该把你的评论作为答案发布,这样你就能得到积分了 :) - hac.jack
显示剩余3条评论
4个回答

10

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

首先,我创建了一个bin目录,并将composer.phar移动到其中。然后,我在我的.bash_profile中添加了这个别名,它就像魔法一样起作用:

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

希望这能有所帮助!


6

现在Composer可以通过WHM使用,您可以使用以下方法找到它:

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

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

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

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

或者

php-cli $(which composer) ...

0

安装的 PHP 版本位置因主机而异。尝试使用以下命令查找:

locate /bin/php

对我来说,这会列出所有的PHP版本,然后我可以用其他内容替换PHP,例如:
/usr/bin/php71-cli

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

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

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


0
我已经编写了一个脚本来处理composer/vendor中的更改。该脚本适用于仅使用ftp服务器,并仅发送/删除更改的文件。也许有人会发现它有用。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接