PHP
Se detecta por composer.json. Se sirve con FrankenPHP.
Guías de despliegue paso a paso: PHP.
Consulta Buildpackspara ver cómo funcionan la detección y la política de versiones. Si el proyecto también tiene package.json, recibe Node.jsen la misma build (Laravel + Vite).
Detección
composer.json en el directorio base.
Versiones
La versión por defecto es PHP 8.3. Ramas publicadas a septiembre de 2026: 8.2-8.5. Recibes el último parche de la versión minor solicitada.
Para fijar la versión, por este orden:
.php-versionrequire.phpencomposer.json(un rango elige la versión publicada más alta que encaje)
Composer es una herramienta de build. No puedes fijar su versión.
Instalación y build
composer install --no-dev --optimize-autoloader. Después, Laravel (artisan) cachea config, rutas, vistas y eventos si existen esos comandos de Artisan. Symfony (bin/console más symfony.lock) ejecuta cache:warmup --env=prod.
Valores por defecto al arrancar: Laravel APP_ENV=production, LOG_CHANNEL=stderr, APP_DEBUG=false. Symfony APP_ENV=prod, APP_DEBUG=0.
Comando de inicio
La raíz de documentos es public/, o web/, o la raíz de la app.
- Laravel Octane (el lockfile incluye
laravel/octane):php artisan octane:frankenphp --port=$PORT --host=0.0.0.0 - En los demás casos:
frankenphp php-server --listen :$PORT --root <docroot>
Puedes sobrescribirlo con un Procfile. Tu app debe escuchar en PORT.