Nadie negará que Composer es una herramienta bastante conveniente y que hay proveedores de alojamiento gratuitos o baratos que no proporcionan ninguna consola o herramienta integrada para trabajar con Composer. Este es exactamente el tipo de pila que encontré. Bueno, como el Jedi legó, el
proveedor se agrega inmediatamente a
.gitignore para no
saturar su repositorio y no conducir bibliotecas de aquí para allá.
Lo primero que se me ocurrió fue hacer que un script fuera accesible desde la Web, que se pueda extraer en el momento adecuado y actualizará las dependencias o las instalará.
Para hacer esto, necesitamos realizar algunas manipulaciones.
1. Para instalar el compositor localmente,
necesitamos descargar composer.phar .
2. Cree una carpeta donde se desempaquetará (deje que sea
var ).
3. Crea
composer.json (bueno, sobre este creo que ya sabes si trabajaste con compositor).
4. Bueno, cree el script para trabajar con el compositor desde la Web (déjelo ser
composer.php ).
Entonces tenemos la estructura de nuestro sitio futuro:
Composer.phar en sí será el siguiente:
<?php use Composer\Console\Application; use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Output\StreamOutput;
Y si eres un chico feliz. Después de llamar al script, expandirá la carpeta del
proveedor .
Pero no resultó así) Lo primero que rompió mis planes fue configurar
phar.readonly = On en
php.ini , y como habrás adivinado en el hosting gratuito, generalmente no puedes editarlo. Entonces comencé a buscar soluciones.
Lo primero que probé fue crear
user.ini, que anulará la configuración en
php.ini , funcionó en la máquina local) Pero en el alojamiento, esta funcionalidad fue apuñalada.
Luego intenté usar un truco más. Cambie el nombre de
composer.phar a solo
compositor , el resultado es el mismo. Funcionó en LAN, pero no en hosting.
Luego, de todos modos, en lugar de un script, tuve que descomprimir los archivos localmente en
var y subirlos al servidor.
También vale la pena cerrar el script con autorización, para que todo tipo de personas no lo llamen. También en la versión final del script, agregué la elección del comando a través de los parámetros.
<?php use Composer\Console\Application; use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Output\BufferedOutput; use Symfony\Component\Console\Output\OutputInterface;
Además, no está de más agregar una regla a
.htaccess para reenviar el encabezado de autorización (en el caso de CGI) y una redirección a HTTPS, ya que la autorización se deja en claro.
RewriteEngine On # CGI, , RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # HTTPS, RewriteCond %{HTTPS} off RewriteCond %{HTTP:SSL} !=1 [NC] RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=302,L]