Usar Composer por SSH: gestión de dependencias PHP

Composer es el gestor de paquetes estándar para PHP. Hace que instalar bibliotecas y frameworks sea coser y cantar. En Theory7 ofrecemos Composer en todos nuestros planes de hosting con acceso SSH. En esta guía aprenderás a usar Composer de forma eficaz en tus proyectos PHP.

¿Qué es Composer?

Composer gestiona las dependencias de los proyectos PHP. En lugar de descargar y actualizar las bibliotecas manualmente, dejas que Composer lo haga de forma automática. Ventajas:

  • Actualizaciones automáticas de las dependencias
  • Resolución de dependencias - los conflictos se resuelven automáticamente
  • Carga automática (autoloading) - las clases se cargan automáticamente
  • Control de versiones - se fijan versiones exactas

Herramientas populares que usan Composer: Laravel, Symfony, plugins de WordPress, PHPUnit.

Comprobar si Composer está disponible

En los servidores de Theory7, Composer suele estar ya instalado. Compruébalo con:

composer --version

Si no se encuentra Composer:

which composer

O prueba la ruta completa:

/usr/local/bin/composer --version

Comandos básicos de Composer

Iniciar un proyecto nuevo

Para un proyecto nuevo con composer.json:

composer init

O instala directamente un framework:

composer create-project laravel/laravel mijnproject

Instalar dependencias

Si clonas un proyecto con un composer.json existente:

composer install

Esto instala todas las dependencias especificadas en composer.lock.

Añadir un paquete nuevo

composer require vendor/package

Ejemplo:

composer require monolog/monolog
composer require guzzlehttp/guzzle

Dependencias de desarrollo

Para paquetes que solo se necesitan durante el desarrollo:

composer require --dev phpunit/phpunit

Eliminar un paquete

composer remove vendor/package

Actualizarlo todo

composer update

O un paquete específico:

composer update vendor/package

Composer en producción

Instalación optimizada

Para servidores de producción:

composer install --no-dev --optimize-autoloader

Qué hacen estas opciones:

  • --no-dev - Omite las dependencias de desarrollo
  • --optimize-autoloader - Genera un mapa de clases optimizado

Optimización del autoloader

Después del despliegue:

composer dump-autoload --optimize

Esto acelera considerablemente la carga de las clases.

Estructura de composer.json

Un composer.json básico:

{
    "name": "mijnbedrijf/mijnproject",
    "description": "Mijn PHP project",
    "require": {
        "php": ">=8.1",
        "monolog/monolog": "^3.0"
    },
    "require-dev": {
        "phpunit/phpunit": "^10.0"
    },
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    }
}

Restricciones de versión

  • ^3.0 - Compatible con 3.0 y superior, pero no con 4.0
  • ~3.0 - Como mínimo 3.0, como máximo 3.x
  • 3.0.* - Cualquier versión 3.0.x
  • >=3.0 - 3.0 o superior
  • 3.0.5 - Exactamente esta versión

Composer.lock

Composer.lock fija las versiones exactas. Así todo el mundo usa las mismas versiones.

Importante:

  • Haz commit de composer.lock en el control de versiones
  • Usa composer install (no update) en producción
  • Usa composer update solo en local para actualizaciones deliberadas

Resolución de problemas

Errores de límite de memoria

COMPOSER_MEMORY_LIMIT=-1 composer install

O ajusta php.ini:

php -d memory_limit=-1 /usr/local/bin/composer install

Tiempo de espera agotado durante la instalación

composer config --global process-timeout 600

Problemas de caché

Vacía la caché de Composer:

composer clear-cache

Requisitos de plataforma

Si tu versión local de PHP es distinta de la de producción:

{
    "config": {
        "platform": {
            "php": "8.1"
        }
    }
}

Composer en hosting compartido

En hosting compartido con recursos limitados:

  1. Instala las dependencias en local
  2. Sube la carpeta vendor/ al servidor
  3. O usa composer anulando el límite de memoria

Scripts de Composer

Automatiza tareas con scripts en composer.json:

{
    "scripts": {
        "post-install-cmd": [
            "php artisan optimize"
        ],
        "test": "phpunit"
    }
}

Ejecútalos con:

composer test

Paquetes privados

Para repositorios privados:

{
    "repositories": [
        {
            "type": "vcs",
            "url": "git@github.com:mijnbedrijf/privaat-package.git"
        }
    ]
}

Asegúrate de que las claves SSH estén bien configuradas.

  • Estrategia de copias de seguridad del servidor
  • Configuración de PHP-FPM

¿Necesitas ayuda?

Estamos a tu disposición. ¿Te has encontrado con algún problema o tienes preguntas? Nuestro equipo de soporte te ayuda personalmente. Envíanos un mensaje a través del sistema de tickets: normalmente respondemos en unas horas y buscamos contigo la solución.

¿Buscas hosting WordPress? Consulta nuestra oferta.