Ninguém negará que o Composer é uma ferramenta bastante conveniente e que existem provedores de hospedagem gratuitos ou baratos que não fornecem nenhum console ou ferramenta interna para trabalhar com o Composer. Esse é exatamente o tipo de pilha que me deparei. Bem, como os Jedi legaram, o
fornecedor é imediatamente adicionado ao
.gitignore para não bagunçar seu repositório e não direcionar bibliotecas para lá e para cá.
A primeira coisa que veio à mente foi tornar um script acessível a partir da Web, que pode ser extraído no momento certo e atualizará as dependências ou as instalará.
Para fazer isso, precisamos realizar algumas manipulações.
1. Para instalar o compositor localmente,
precisamos fazer o download do compositer.phar .
2. Crie uma pasta onde será descompactada (seja
var ).
3. Crie
composer.json (bem, acho que você já sabe se trabalhou com o compositor).
4. Bem, crie o próprio script para trabalhar com o compositor da Web (que seja
compositer.php ).
Portanto, temos a estrutura do nosso futuro site:
O próprio Composer.phar será o seguinte:
<?php use Composer\Console\Application; use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Output\StreamOutput;
E se você é um cara feliz. Depois de chamar o script, ele expandirá a pasta do
fornecedor .
Mas eu não fui assim) A primeira coisa que quebrou meus planos foi definir
phar.readonly = On no
php.ini e, como você deve ter adivinhado sobre hospedagem gratuita, geralmente não pode editá-lo. Então comecei a procurar soluções alternativas.
A primeira coisa que tentei foi criar o
user.ini, que substituirá as configurações do
php.ini , funcionou na máquina local) Mas, na hospedagem, essa funcionalidade foi esfaqueada.
Então eu tentei usar mais um truque. Renomeie
composer.phar para apenas
compositor , o resultado é o mesmo. Funcionou na LAN, mas não na hospedagem.
Mesmo assim, em vez de um script, tive que descompactar os arquivos localmente em
var e enviá-los para o servidor.
Também vale a pena fechar o script com autorização, para que todo tipo de pessoa não o chame. Também na versão final do script, adicionei a escolha do comando através dos 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;
Além disso, não é necessário adicionar uma regra ao
.htaccess para encaminhar o cabeçalho da autorização (no caso de CGI) e um redirecionamento para HTTPS, já que a autorização é clara.
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]