Tidak ada yang akan menyangkal bahwa Komposer adalah alat yang cukup nyaman, dan bahwa ada penyedia hosting gratis atau murah yang tidak menyediakan konsol atau alat bawaan untuk bekerja dengan Komposer. Ini persis seperti tumpukan yang saya temui. Nah, seperti yang diwariskan Jedi,
vendor segera ditambahkan ke
.gitignore agar tidak mengacaukan repositori mereka dan tidak mendorong perpustakaan ke sana kemari.
Hal pertama yang terlintas dalam pikiran adalah membuat skrip dapat diakses dari Web, yang dapat ditarik pada waktu yang tepat dan itu akan memperbarui dependensi atau menginstalnya.
Untuk melakukan ini, kita perlu melakukan beberapa manipulasi.
1. Untuk menginstal komposer secara lokal, kita
perlu mengunduh composer.phar .
2. Buat folder tempat akan dibongkar (biarkan
var ).
3. Buat
composer.json (baik, yang ini saya pikir Anda sudah tahu jika Anda bekerja dengan komposer)
4. Nah, buat skrip itu sendiri untuk bekerja dengan komposer dari Web (biarkan itu menjadi
composer.php ).
Jadi kami memiliki struktur situs masa depan kami:
Composer.phar sendiri adalah sebagai berikut:
<?php use Composer\Console\Application; use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Output\StreamOutput;
Dan jika Anda pria yang bahagia. Setelah memanggil skrip, itu akan memperluas folder
vendor .
Tapi saya tidak jadi seperti itu) Hal pertama yang merusak rencana saya adalah mengatur
phar.readonly = Aktif di
php.ini , dan seperti yang Anda duga tentang hosting gratis, Anda biasanya tidak dapat mengeditnya. Kemudian saya mulai mencari solusi.
Hal pertama yang saya coba adalah membuat
user.ini yang akan menimpa pengaturan di
php.ini , ini bekerja pada mesin lokal) Tetapi pada hosting fungsi ini ditusuk.
Lalu saya mencoba menggunakan satu trik lagi. Ganti nama
composer.phar menjadi hanya
composer , hasilnya sama saja. Ini bekerja pada LAN, tetapi tidak pada hosting.
Kemudian, semua sama, alih-alih skrip, saya harus membongkar file secara lokal ke
var dan mengunggahnya ke server.
Sebaiknya tutup skrip dengan otorisasi, sehingga semua jenis orang tidak menyebutnya. Juga dalam versi terakhir dari skrip saya menambahkan pilihan perintah melalui parameter.
<?php use Composer\Console\Application; use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Output\BufferedOutput; use Symfony\Component\Console\Output\OutputInterface;
Juga, tidak ada ruginya menambahkan aturan ke
.htaccess untuk meneruskan header otorisasi (dalam kasus CGI) dan pengalihan ke HTTPS, karena otorisasi tidak jelas.
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]