【问题标题】:Composer update doesn't work in my case作曲家更新在我的情况下不起作用
【发布时间】:2016-01-12 08:14:58
【问题描述】:

我在我的网站上安装了 Laravel 5.0(通过 FTP)。然后我尝试通过 SSH 连接并使用 Composer 进行更新。但是我收到了这个错误。 (我的 PHP 是 5.5 版,我检查了 phpinfo 函数)。

PHP Notice:  Undefined index: argv in phar:///home/cluster-sites/58/kerimcaglar.com/laravel/composer.phar/vendor/symfony/console/Input/ArgvInput.php on line 55
PHP Warning:  array_shift() expects parameter 1 to be array, null given in phar:///home/cluster-sites/58/kerimcaglar.com/laravel/composer.phar/vendor/symfony/console/Input/ArgvInput.php on line 59
PHP Warning:  Invalid argument supplied for foreach() in phar:///home/cluster-sites/58/kerimcaglar.com/laravel/composer.phar/vendor/symfony/console/Input/ArgvInput.php on line 285
PHP Warning:  Invalid argument supplied for foreach() in phar:///home/cluster-sites/58/kerimcaglar.com/laravel/composer.phar/vendor/symfony/console/Input/ArgvInput.php on line 285
PHP Warning:  Invalid argument supplied for foreach() in phar:///home/cluster-sites/58/kerimcaglar.com/laravel/composer.phar/vendor/symfony/console/Input/ArgvInput.php on line 285
PHP Warning:  Invalid argument supplied for foreach() in phar:///home/cluster-sites/58/kerimcaglar.com/laravel/composer.phar/vendor/symfony/console/Input/ArgvInput.php on line 285
PHP Warning:  Invalid argument supplied for foreach() in phar:///home/cluster-sites/58/kerimcaglar.com/laravel/composer.phar/vendor/symfony/console/Input/ArgvInput.php on line 285
PHP Warning:  Invalid argument supplied for foreach() in phar:///home/cluster-sites/58/kerimcaglar.com/laravel/composer.phar/vendor/symfony/console/Input/ArgvInput.php on line 285
PHP Warning:  Invalid argument supplied for foreach() in phar:///home/cluster-sites/58/kerimcaglar.com/laravel/composer.phar/vendor/symfony/console/Input/ArgvInput.php on line 285
PHP Warning:  Invalid argument supplied for foreach() in phar:///home/cluster-sites/58/kerimcaglar.com/laravel/composer.phar/vendor/symfony/console/Input/ArgvInput.php on line 285
PHP Warning:  Invalid argument supplied for foreach() in phar:///home/cluster-sites/58/kerimcaglar.com/laravel/composer.phar/vendor/symfony/console/Input/ArgvInput.php on line 285
PHP Warning:  Invalid argument supplied for foreach() in phar:///home/cluster-sites/58/kerimcaglar.com/laravel/composer.phar/vendor/symfony/console/Input/ArgvInput.php on line 285
PHP Warning:  Invalid argument supplied for foreach() in phar:///home/cluster-sites/58/kerimcaglar.com/laravel/composer.phar/vendor/symfony/console/Input/ArgvInput.php on line 285



  [ErrorException]                         
  Invalid argument supplied for foreach()  



X-Powered-By: PHP/5.3.28
Content-type: text/html

Warning: Composer should be invoked via the CLI version of PHP, not the cgi-fcgi SAPI

Notice: Undefined index: argv in phar:///home/cluster-sites/58/kerimcaglar.com/laravel/composer.phar/vendor/symfony/console/Input/ArgvInput.php on line 55

Warning: array_shift() expects parameter 1 to be array, null given in phar:///home/cluster-sites/58/kerimcaglar.com/laravel/composer.phar/vendor/symfony/console/Input/ArgvInput.php on line 59

Warning: Invalid argument supplied for foreach() in phar:///home/cluster-sites/58/kerimcaglar.com/laravel/composer.phar/vendor/symfony/console/Input/ArgvInput.php on line 285

Warning: Invalid argument supplied for foreach() in phar:///home/cluster-sites/58/kerimcaglar.com/laravel/composer.phar/vendor/symfony/console/Input/ArgvInput.php on line 285

Warning: Invalid argument supplied for foreach() in phar:///home/cluster-sites/58/kerimcaglar.com/laravel/composer.phar/vendor/symfony/console/Input/ArgvInput.php on line 285

Warning: Invalid argument supplied for foreach() in phar:///home/cluster-sites/58/kerimcaglar.com/laravel/composer.phar/vendor/symfony/console/Input/ArgvInput.php on line 285

Warning: Invalid argument supplied for foreach() in phar:///home/cluster-sites/58/kerimcaglar.com/laravel/composer.phar/vendor/symfony/console/Input/ArgvInput.php on line 285

Warning: Invalid argument supplied for foreach() in phar:///home/cluster-sites/58/kerimcaglar.com/laravel/composer.phar/vendor/symfony/console/Input/ArgvInput.php on line 285

Warning: Invalid argument supplied for foreach() in phar:///home/cluster-sites/58/kerimcaglar.com/laravel/composer.phar/vendor/symfony/console/Input/ArgvInput.php on line 285

Warning: Invalid argument supplied for foreach() in phar:///home/cluster-sites/58/kerimcaglar.com/laravel/composer.phar/vendor/symfony/console/Input/ArgvInput.php on line 285

Warning: Invalid argument supplied for foreach() in phar:///home/cluster-sites/58/kerimcaglar.com/laravel/composer.phar/vendor/symfony/console/Input/ArgvInput.php on line 285

Warning: Invalid argument supplied for foreach() in phar:///home/cluster-sites/58/kerimcaglar.com/laravel/composer.phar/vendor/symfony/console/Input/ArgvInput.php on line 285

Warning: Invalid argument supplied for foreach() in phar:///home/cluster-sites/58/kerimcaglar.com/laravel/composer.phar/vendor/symfony/console/Input/ArgvInput.php on line 285 

我控制了 cli -v ,但找不到此命令。

后来我在下面尝试:

$ php -d register_argc_argv=1 "./composer.phar" install

Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - league/flysystem 1.0.16 requires php >=5.4.0 -> your PHP version (5.3.28) or value of "config.platform.php" in composer.json does not satisfy that requirement.
    - league/flysystem 1.0.16 requires php >=5.4.0 -> your PHP version (5.3.28) or value of "config.platform.php" in composer.json does not satisfy that requirement.
    - Installation request for league/flysystem 1.0.16 -> satisfiable by league/flysystem[1.0.16].

【问题讨论】:

  • 我在更新 composer 时也遇到了问题,后来发现你至少需要 768 MB 或 RAM 才能执行这样的命令,当我更新我的主机时一切正常。

标签: php laravel laravel-5 composer-php


【解决方案1】:

我怀疑这是一个重要的错误:

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

尝试which php 查看您的PHP 二进制文件指向的位置,然后尝试locate bin/php 找出您的系统还有哪些其他版本。

还要注意这一点:

我的 PHP 是 5.5 版;我检查了phpinfo函数

有什么不同意你的:

X-Powered-By:PHP/5.3.28

使用完全限定路径尝试使用 locate 发现的 PHP 二进制文件的其他副本。例如:

/usr/bin/php55-cli composer.php update

如果此主机具有 5.5 CGI 二进制文件和 5.3 控制台二进制文件,则它们可能不知道自己在做什么 - 现在不应再支持 5.3。如果您自己修复它没有任何运气,请创建支持票证并请求 php 从 shell 调用 5.5 控制台二进制文件。


更新:根据 cmets 中的对话,上面似乎解决了一个问题并暴露了另一个问题。新问题是您的 Composer 命令越来越远,它正在尝试再次调用使用 php 二进制文件的 PHP 帮助程序。这会导致最初的问题(它是 Web 服务器二进制文件,它是 5.3 而不是 5.5)。

要解决这个问题,我建议您 (a) 创建一个本地 php 可执行文件以指向您想要的版本,然后 (b) 重置系统路径。我会在您的项目目录中尝试以下操作:

ln -s /usr/bin/php55-cli ./php
PATH=. ./php composer.phar update

这将创建一个指向所需 PHP 版本的符号链接,然后将系统路径临时重置为当前目录。

如果这不能完全解决问题,您可能需要将符号链接放在更永久的位置(例如 ~/bin/php 并修改您的 shell 启动文件。请先尝试一下,然后再惊呼它不起作用 - 学习如何独立完成此操作的最佳方法是尝试!

【讨论】:

  • 当我运行 'which php' 输出是 /usr/bin/php 。并运行 /usr/bin/php composer.php 更新。同样的错误
  • @Kerim:请参阅最后一段了解在这种情况下该怎么做。
  • 当我运行 locate bin/php /usr/bin/php /usr/bin/php4 /usr/bin/php5 /usr/bin/php5-cli /usr/bin/php53 /usr/ bin/php53-cli /usr/bin/php54 /usr/bin/php54-cli /usr/bin/php55 /usr/bin/php55-cli /usr/bin/phpize54 /usr/bin/phpize55
  • 太好了,@克里姆!鉴于 (a) 您想要 CLI 版本,以及 (b) 您想要 5.5 版本,您认为哪一个更合适?
  • @Kerim,感谢您提供的信息,不客气。很高兴它现在为您修复了。
猜你喜欢
  • 1970-01-01
  • 2014-01-30
  • 2013-10-14
  • 2016-10-20
  • 2021-10-05
  • 2014-12-10
  • 2022-06-13
  • 1970-01-01
  • 2017-03-13
相关资源
最近更新 更多