Rumah > Artikel > pembangunan bahagian belakang > (Kali pertama saya) Memasang Laravel
Kadangkala, terutamanya apabila anda berada di permulaan kerjaya anda, nampaknya anda mengikut arahan dan tidak mendapat apa-apa - manakala orang lain nampaknya berasa sangat mudah.
Ia boleh menjadi sangat mengecewakan, dan saya ingin menerangkan beberapa cara saya mengalami perkara yang sama walaupun selepas, dekad. Jadi di sini saya, cuba untuk memperincikan tersandung dan tersandung yang saya buat untuk membuat sesuatu berfungsi. Ini adalah catatan pertama saya mengenai subjek itu, tetapi saya berharap untuk membuat lebih banyak lagi.
Laravel berusaha untuk memberikan pengalaman pembangun yang menakjubkan [...]
Sama ada anda baru menggunakan rangka kerja web PHP atau mempunyai pengalaman bertahun-tahun [...]
Laravel disebut-sebut sebagai "rangka kerja pembangun, sekurang-kurangnya dalam kalangan PHP, kerana ia lebih telanjang daripada yang lain dan ia memerlukan keputusan seni bina yang mudah tetapi ketat. Saya telah melakukan beberapa rangka kerja PHP yang lain - Drupal 7 , Drupal 8 , Symfony, WordPress, Concrete5, PrestaShop, CodeIgniter dari atas kepala saya - jadi saya tidak akan membincangkan perkara ini tidak bersedia.
Saya akan bermula dari komputer riba barebones dan lihat sejauh mana saya pergi.
Sebelum membuat aplikasi Laravel pertama anda, pastikan mesin setempat anda telah memasang PHP, Komposer dan pemasang Laravel. Selain itu, anda harus memasang sama ada Node dan NPM atau Bun supaya anda boleh menyusun aset bahagian hadapan aplikasi anda.
OK. Bukan masalah. Saya akan memasang sendiri beberapa PHP itu, dapatkan komposer dari... getcomposer.org, dan memikirkan cara memasang "Pemasang Laravel" seterusnya. Nampaknya distro saya mempunyai Node 22 di luar kotak, atau ia dipasang apabila saya menyediakan sesuatu yang lain lebih awal, jadi ia harus dilindungi.
$ komposer global memerlukan laravel/pemasang
Boom. Selesai. Tiada masalah lagi, kami memulakan permulaan yang baik dan keyakinan berada pada tahap tertinggi sepanjang masa.
$ laravel contoh-aplikasi baharu
zsh: arahan tidak ditemui: laravel
Oh. Mungkin saya perlu melihat semula perkara keyakinan tertinggi itu.
Jadi, nampaknya komposer tidak memasang apa-apa ke dalam laluan perduaan biasa dan pemasang komposer tidak melakukan apa-apa untuk menambah dirinya pada laluan sistem sama ada. Saya tidak pernah benar-benar menghadapinya sebelum ini, kerana saya telah menjalankan terus binari yang dipasang komposer dari mana-mana laluan yang muncul. Contohnya, dengan Drupal, terdapat vendor/drush/drush/drush atau vendor/bin/drush bergantung pada versi yang anda jalankan. Adakah saya perlu menambah diri saya pautan sym atau alias atau mencari perduaan laravel di mana-mana komposer menambahkannya, "secara global"?
Saya tidak tahu, jadi saya perlu mencari ini.
Saya dapati beberapa petunjuk pada jawapan Stack Overflow: anda boleh mencari direktori binari komposer dengan composer global config bin-dir --absolute, dan nampaknya dalam versi moden komposer segala-galanya dengan arahan boleh laku memasukkannya ke dalam direktori itu. daripada kehilangan dirinya kepada hierarki.
Baik. Saya boleh menambah sesuatu pada skrip permulaan saya untuk meletakkannya di laluan saya... kecuali arahan itu menghasilkan lebih daripada sekadar laluan...
$ composer global config bin-dir --absolute
Direktori semasa ditukar kepada /home/moopet/.config/composer
/home/moopet/.config/composer/vendor/bin
... dan saya tidak boleh menggunakan keseluruhan rentetan itu sebagai direktori. Mungkin saya perlu menggunakan ekor untuk mendapatkan baris terakhir, atau sesuatu. Tunggu, tidak ada komen lain tentang jawapan SO ini yang termasuk bendera --quiet. Apa yang dilakukannya? Saya akan cuba komposer --help:
Penggunaan:
senaraikan [pilihan] [--] []
Nah, eh, ternyata bahawa running --help pada arahan komposer kosong sebenarnya memberikan bantuan untuk subperintah senarai dan bukannya komposer itu sendiri. Itu membuatkan saya buntu seketika.
-q --diam Jangan keluarkan sebarang mesej
Hmm, macam tak berguna! Kami mahu beberapa keluaran. Apa lagi yang ada?
--raw Untuk mengeluarkan senarai arahan mentah
--format=FORMAT Format output (txt, xml, json, atau md) [lalai: "txt"]
Mungkin salah satu daripada ini?
Pilihan "--raw" tidak wujud.
Pilihan "--format" tidak wujud.
Tidak. Seperti yang saya fikirkan, ini adalah pilihan untuk disenaraikan dan bukan bendera penggunaan umum.
Mari kita jalankan dengan --senyap pula, hanya untuk kotoran dan kelakar:
$ composer global config bin-dir --absolute --quiet
/home/moopet/.config/composer/vendor/bin
Nah, apa yang anda tahu, ia berkesan. Ia hanya didokumenkan dengan teruk.
Saya akan memasukkannya ke dalam skrip permulaan shell saya dengan sedikit kod pengawal dan kita boleh meneruskan:
if command -v composer >/dev/null; then export PATH=$(composer global config bin-dir --absolute --quiet):$PATH fi
Kali ini laravel contoh apl baharu dilancarkan dan menggesa saya untuk beberapa perkara. Saya menerima lalai, kerana saya belum membaca cukup jauh dalam dokumentasi untuk mengetahui perbezaannya, kecuali untuk kit permulaan. Saya memilih, "Breeze" kerana begitulah keadaannya dalam dokumentasi.
Ia memulakan proses pemasangan dan semuanya kelihatan baik sehingga:
- Root composer.json memerlukan laravel/pint ^1.0 -> memuaskan oleh laravel/pint[v1.0.0, v1.1.0, v1.1.1].
- laravel/pint[v1.0.0, ..., v1.1.1] memerlukan ext-xml * -> ia tiada daripada sistem anda. Pasang atau dayakan sambungan xml PHP.
Tunggu, PHP memerlukan sambungan XML? Itu tidak pernah disenaraikan sebagai keperluan! OK, saya akan buat apt install php-xml pantas.
Baik, semua dipasang. Saya akan menjalankan persediaan sekali lagi.
apl contoh baharu laravel
Dalam baris NewCommand.php 789:
Permohonan sudah wujud!
Oh.
Jadi, pemasang telah selesai, gagal kerana ia tidak mengesahkan kebergantungannya dan telah meninggalkan apl dalam keadaan rosak. Itu bukan petanda yang baik. Laravel dihidupkan, apa, versi 11?
Sudah tentu mereka mempunyai keperluan asas awal yang diperiksa sekarang? oh baiklah. Saya hanya akan rm -r contoh-apl dan mula semula, tiada apa yang rugi kerana saya belum benar-benar bermula.
Pendek cerita1 pergantungan yang hilang seterusnya ialah sambungan DOM, atau mungkin sambungan XML. Atau mungkin sambungan cURL.
- phpunit/phpunit[11.0.1, ..., 11.4.3] memerlukan ext-dom * -> ia tiada daripada sistem anda. Pasang atau dayakan sambungan dom PHP.
- Root composer.json memerlukan phpunit/phpunit ^11.0.1 -> memuaskan oleh phpunit/phpunit[11.0.1, ..., 11.4.3].
Jadi saya perlu memasang php-dom? Tidak. Cuba yang lain. Timbunan Limpahan sekali lagi. Ternyata saya perlu memasang php-curl. Betul.
Seterusnya. rm -r direktori dan jalankan melalui wizard persediaan sekali lagi.
Ia menggesa saya untuk menggunakan pelayan pangkalan data yang mana. Kesemua mereka berkata, "Sambungan PDO hilang" di sebelah mereka.
Keluh.
Saya keluar dari pemasang, padam keseluruhan direktori sekali lagi, apt install php8.3-mysql kerana tiada pakej php-pdo langsung dan tiada alias untuk php-mysql yang berfungsi sama ada, jadi saya telah melakukan beberapa apt yang memenatkan mencari.
IlluminateDatabaseQueryException
SQLSTATE[HY000] [2002] Sambungan ditolak (Sambungan: mysql, SQL: pilih wujud (pilih 1 daripada information_schema.tables di mana table_schema = 'laravel_example_app' dan table_name = 'migration' dan table_type in ('BASE TABLE', 'SYSTEM VERSIED' )) sebagai 'wujud')
Apa sekarang? Pemasang ini tidak pernah meminta saya butiran sambungan untuk pangkalan data. Dan ia cuba menjalankan perintah SQL terhadap... sesuatu. Siapa tahu?
Apabila berlaku, saya mempunyai pelayan MySQL yang dijalankan pada hos lain dalam LAN saya dan bersedia untuk menggunakannya (walaupun saya akan ambil perhatian bahawa membawa pangkalan data anda sendiri tidak disenaraikan sebagai keperluan untuk Laravel). Saya rasa saya sepatutnya memasang SQLite, mungkin itu akan berjaya, kerana ia tidak memerlukan sebarang bukti kelayakan.
sudo apt install php8.3-sqlite
Cuba lagi.
rm -r contoh-apl
laravel contoh-aplikasi baharu
...
Kejayaan besar. Suara penggodam "Saya masuk". Untuk kemenangan. Nak berjaya.
Saya berjaya? Saya rasa.
Tetapi jika seseorang bertanya kepada saya berapa lama masa yang diperlukan, maka berdasarkan dokumentasi dan reputasi yang bersemangat, saya akan berkata 20 minit. Jika saya melakukannya untuk kerja, pengurus projek saya akan menggandakan atau menggandakannya berdasarkan pengalaman anggaran pembangun.
Berapa lama masa yang saya ambil? Satu jam atau lebih pada suatu petang dan satu jam atau lebih pada hari berikutnya. Saya tidak tergesa-gesa, tetapi ia tidak mudah.
Dan anda tahu apa? Saya tidak berpuas hati dengannya. Ia tidak menggunakan MySQL, kerana bahagian pemasang itu nampaknya rosak sepenuhnya. Saya menggunakan SQLite dan itu satu langkah lebih jauh daripada apa yang akan berlaku dalam persekitaran pengeluaran sebenar. Jadi pasti ada beberapa perkara yang tinggal dalam senarai TODO sebelum saya boleh meneruskan tutorial sebenar.
Tetapi ia berjalan. Langkah binaan mendakwa mereka berjalan tanpa sebarang halangan.
Saya bersedia untuk fasa seterusnya: membetulkan JsonException, ralat Syntax dan ProcessTimedOutException yang muncul dalam konsol sebaik sahaja saya membuka halaman demo dalam penyemak imbas saya.
Eh-oh.
Seandainya semuanya berjalan lancar, eh.
Korus: terlambat ↩
Atas ialah kandungan terperinci (Kali pertama saya) Memasang Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!