我第一次尝试在我的共享主机上安装作曲家。
当我跑curl -sS https://getcomposer.org/installer | php
我正在成功安装
作曲家用户它:php composer.phar
当我运行php composer.phar
时,我收到这个交战错误:
警告:作曲家应该通过 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版本来解决这个问题。请记住,在共享服务器环境中,通常会运行多个版本的 PHP,即使您可能在 cPanel 配置中设置了默认值,bash 命令也经常解析为另一个(较低)版本。
首先,我创建了一个bin
目录,并将composer.phar移到了其中。然后,我将这个别名添加到我的.bash_profile中,它就像一个魅力:
alias composer="/usr/php/54/usr/bin/php-cli ~/bin/composer.phar"
希望这有帮助!
由于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
将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) ...
安装的 php 版本的位置因主机而异。尝试通过以下方式查找它们:
locate /bin/php
对我来说,这列出了所有 php 版本,然后我可以将 php 替换为,例如:
/usr/bin/php71-cli
访问命令行界面版本而不是默认的 cgi 版本。然后如@Diggery所述,您可以创建别名。
alias composer='/usr/bin/php71-cli bin/composer.phar'
关于如何测试 cli 安装的 StackOverflow 有很多建议,但以上是唯一对我有用的建议。
我制作了一个脚本来处理作曲家/供应商的更改。该脚本适用于仅 ftp 的服务器,仅发送/删除更改的文件。也许有人会发现它很有用。
https://github.com/psad73/tune-composer