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.
Mari belajar Laravel.
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.
Memasang prasyarat (tldr; isu: sifar, keyakinan: tertinggi)
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.
Menyediakan projek Laravel baharu (tldr; isu: beberapa, keyakinan: tinggi)
$ 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
Sediakan projek Laravel baharu, ambil 2 (tldr; isu: beberapa, keyakinan: goyah)
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.
Sediakan projek Laravel baharu, ambil 3 (tldr; isu: hngg, keyakinan: masih goyah tetapi disokong oleh kejayaan menyelesaikan masalah baru-baru ini)
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.
Kesimpulan
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!

Untuk melindungi permohonan dari serangan XSS yang berkaitan dengan sesi, langkah-langkah berikut diperlukan: 1. Tetapkan bendera httponly dan selamat untuk melindungi kuki sesi. 2. Kod eksport untuk semua input pengguna. 3. Melaksanakan Dasar Keselamatan Kandungan (CSP) untuk mengehadkan sumber skrip. Melalui dasar-dasar ini, serangan XSS yang berkaitan dengan sesi dapat dilindungi dengan berkesan dan data pengguna dapat dipastikan.

Kaedah untuk mengoptimumkan prestasi sesi PHP termasuk: 1. Mula sesi kelewatan, 2. Gunakan pangkalan data untuk menyimpan sesi, 3. Data sesi kompres, 4. Mengurus kitaran hayat sesi, dan 5. Melaksanakan perkongsian sesi. Strategi ini dapat meningkatkan kecekapan aplikasi dalam persekitaran konkurensi yang tinggi.

Thesession.gc_maxlifetimesettinginphpdeterminesthelifespanofsessiondata, setInseconds.1) it'sconfiguredinphp.iniorviaini_set (). 2) abalanceisneededtoavoidperformanceissuesandunexpectedlogouts.3) php'sgarbageCollectionisprobabilistic, influedbygc_probabi

Dalam PHP, anda boleh menggunakan fungsi session_name () untuk mengkonfigurasi nama sesi. Langkah -langkah tertentu adalah seperti berikut: 1. Gunakan fungsi session_name () untuk menetapkan nama sesi, seperti session_name ("my_session"). 2. Selepas menetapkan nama sesi, hubungi session_start () untuk memulakan sesi. Mengkonfigurasi nama sesi boleh mengelakkan konflik data sesi antara pelbagai aplikasi dan meningkatkan keselamatan, tetapi memberi perhatian kepada keunikan, keselamatan, panjang dan penetapan masa sesi.

ID sesi hendaklah dijadikan semula secara teratur pada log masuk, sebelum operasi sensitif, dan setiap 30 minit. 1. Meningkatkan semula ID Sesi semasa log masuk untuk mengelakkan serangan tetap sesi. 2. Regenerate sebelum operasi sensitif untuk meningkatkan keselamatan. 3. Penjanaan semula secara berkala mengurangkan risiko penggunaan jangka panjang, tetapi pengalaman pengguna perlu ditimbang.

Menetapkan Parameter Cookie Sesi di PHP boleh dicapai melalui fungsi session_set_cookie_params (). 1) Gunakan fungsi ini untuk menetapkan parameter, seperti masa tamat, laluan, nama domain, bendera keselamatan, dan lain -lain; 2) hubungi session_start () untuk membuat parameter berkuatkuasa; 3) menyesuaikan parameter secara dinamik mengikut keperluan, seperti status log masuk pengguna; 4) Perhatikan untuk menetapkan bendera selamat dan httponly untuk meningkatkan keselamatan.

Tujuan utama menggunakan sesi dalam PHP adalah untuk mengekalkan status pengguna antara halaman yang berbeza. 1) Sesi dimulakan melalui fungsi session_start (), mewujudkan ID sesi yang unik dan menyimpannya dalam cookie pengguna. 2) Data sesi disimpan di pelayan, yang membolehkan data diluluskan antara permintaan yang berbeza, seperti status log masuk dan kandungan keranjang belanja.

Bagaimana untuk berkongsi sesi antara subdomain? Dilaksanakan dengan menetapkan kuki sesi untuk nama domain biasa. 1. Tetapkan domain cookie sesi ke .example.com di sebelah pelayan. 2. Pilih kaedah penyimpanan sesi yang sesuai, seperti memori, pangkalan data atau cache yang diedarkan. 3. Lulus ID Sesi melalui kuki, dan pelayan mengambil semula dan mengemas kini data sesi berdasarkan ID.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna