Problemas y Errores frecuentes con Composer

  • Por
  • PHP
Un artículo en el que vemos los problemas con los que nos hemos encontrado en Composer en el trabajo del día a día y las soluciones.

Este artículo es simplemente una lista de situaciones que pueden acarrear problemas en el uso de Composer en el día a día. Lógicamente, esta lista es solo un compendio de las cosas que me han ocurrido personalmente, por lo que igual no está tu problema aquí. (Si encuentras novedades que sirvan para ayudar a otras personas puedes publicarlas como comentarios)

Recuerda que en DesarrolloWeb.com hemos hecho un Manual de Composer que cubre los aspectos más básicos de su uso y configuración. Si no conoces Composer y trabajas con PHP debes de aprender ya mismo!

Mantener actualizado composer

Aparte de actualizar las dependencias, acuérdate de actualizar el propio Composer. Una de las primeras recomendaciones que te ofrecen en la guía de Composer es que ante cualquier problema te asegures primero de estar ejecutando la versión más nueva del software. Lo consigues con un comando de auto-actualización o auto-update.

composer self-update

Recuerda que quizás tengas que ejecutar ese comando como superusuario (sudo composer self-update). Recuerda también que si tu instalación de composer no es global posiblemente tengas que invocar llamando directamente a composer.phar a través del intérprete de PHP (php composer.phar self-update). En el artículo de instalación tienes más información sobre lo que es instalar de manera global

JSON mal formado

Este error es muy fácil de detectar. Si has formado mal tu JSON tendrás un error como:

"./composer.json" does not contain valid JSON

En el artículo de la instalación de Composer explicamos que uno de los problemas típicos, en Windowa es no estar usando la codificación UTF-8. Es necesario para que composer considere que el JSON esté bien formado.

Si estás con UTF-8 debe ser un error de sintaxis, unas comillas que te faltan, una coma o algo así. Si te vuelves loco para encontrar el fallo prueba a usar un Validador de JSON: http://jsonlint.com/

Memoria límite de PHP

Si tu composer.json declara muchas dependencias quizás tengas que aumentar la memoria de los procesos de PHP. El error que verás es parecido a este:

Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 72 bytes) in phar:///usr/local/Cellar/composer/1.0.0-alpha8/libexec/composer.phar/src/Composer/DependencyResolver/RuleSetGenerator.php on line 123

Esto se soluciona asignando más memoria para el proceso de PHP y se indica en el php.ini, en la variable de configuración memory_limit.

memory_limit = 2048M

El valor de memory_limit admite números enteros, en cuyo caso estás especificando una cantidad de Bytes. Pero también te admite terminar con una unidad ("K", "M", "G") indicando el valor en Kb, Mega o Giga.

¿Cuál es mi php.ini cuando trabajo por línea de comandos?

Es una pregunta típica. Si estás trabajando con Composer lo harás con el comando "composer" en tu terminal de sistema operativo. En ese caso es posible que estés trabajando con un php.ini diferente de tu PHP cuando trabaja sobre Apache.

Para saber el php.ini de línea de comandos (PHP CLI) tienes que hacer simplemente este comando.

php -i

Eso te mostrará una cantidad enorme de datos, parecidos a los que obtienes con phpinfo(). Tienes que buscar entre toda esa salida el texto "php.ini" para encontrar la ruta del archivo de configuración que se esté utilizando.

Aumentar el tiempo del proceso de composer

Cuando invocas el comando composer de manera predeterminada se asigna un tiempo de procesamiento que son 300 segundos. Este tiempo puede ser insuficiente en caso que los paquetes a descargar sean pesados o en conexiones a Internet lentas. Si te ocurre esto recibirás un error que entre otras cosas tendrá este texto.

[...] The process "git clone [...] exceeded the timeout of 300 seconds

En este caso puedes invocar al comando asignando un nuevo valor máximo en segundos para realizar las operaciones de actualización o instalación de las dependencias. Sería algo como:

COMPOSER_PROCESS_TIMEOUT=3600 composer install

En la propia documentación de Composer encontrarás una excelente guía de resolución de problemas (en inglés) en la que seguramente darás respuesta a muchas otras situaciones. Yo iré colocando en esta lista otros problemas que me vaya encontrando, de momento esto es todo! si tu problema no está en la lista mándanos la solución cuando la encuentres!

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

jcasistemas2012

06/6/2016
Volver a repasar conceptos :)
Empiezo un proyecto con laravel y siempre es bueno recordar el uso de estas herramientas acudiendo a fuentes 100% confiable.

Se les agradece el detalle por la información tan precisa ! :)

Éxitos,
JCA.

Kyle

05/9/2017
muchas gracias
Gracias. Encuentro esta herramienta también útil: json formatter https://jsonformatter-online.com

Lugomez

24/1/2018
Problema al ejecutar "Composer update"
Hola, tengo un problema al ejecutar "Composer update " en fedora 27 me aparece un error asi:

[---------@---------- hotelstock]$ composer update
Loading composer repositories with package information


[ComposerDownloaderTransportException]
The "https://api.github.com/repos/fbenitez/phpyiibaseapp" file could not be
downloaded (HTTP/1.1 404 Not Found)


update [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--lock] [--no-custom-installers] [--no-autoloader] [--no-scripts] [--no-progress] [--no-suggest] [--with-dependencies] [--with-all-dependencies] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--apcu-autoloader] [--ignore-platform-reqs] [--prefer-stable] [--prefer-lowest] [-i|--interactive] [--root-reqs] [--] [<packages>]...