有時,尤其是當您剛開始職業生涯時,您似乎遵循了指示卻一事無成 - 而其他人似乎發現這非常容易。
這可能非常令人沮喪,我想描述一下即使在幾十年之後我也經歷完全相同的事情的幾種方式。所以我在這裡,試著詳細描述我在努力讓事情順利進行時所犯的錯誤和失誤。這是我關於這個主題的第一篇文章,但我希望發表更多。
讓我們來學習 Laravel。
Laravel 致力於提供令人驚嘆的開發者體驗 [...]
無論您是 PHP Web 框架新手還是擁有多年經驗 [...]
Laravel 被譽為“開發人員的框架”,至少在 PHP 圈子裡是這樣,因為它比其他框架更簡單,並且需要簡單而嚴格的架構決策。我已經完成了其他一些 PHP 框架 - Drupal 7 、Drupal 8、Symfony、WordPress、Concrete5、PrestaShop、CodeIgniter 從我的腦海中浮現出來 - 所以我不打算討論這個毫無準備。
我將從一台準系統筆記型電腦開始,看看我能走多遠。
安裝先決條件(tldr;問題:零,信心:最高)
在建立您的第一個 Laravel 應用程式之前,請確保您的本機電腦已安裝 PHP、Composer 和 Laravel 安裝程式。此外,您應該安裝 Node 和 NPM 或 Bun,以便可以編譯應用程式的前端資產。
好的。不是問題。我將自己安裝一些 PHP,從 getcomposer.org 取得 Composer,並弄清楚下一步如何安裝「Laravel 安裝程式」。顯然我的發行版已經安裝了 Node 22,或者是我之前設定其他東西時安裝的,所以應該涵蓋這一點。
$ 作曲家全域需要 laravel/installer
繁榮。完畢。還沒有問題,我們有了一個好的開始,信心空前高漲。
建立一個新的 Laravel 專案(tldr;問題:一些,信心:高)
$ laravel 新範例應用
zsh:找不到指令:laravel
哦。也許我必須重新審視那個至高無上的自信。
因此,Composer 似乎沒有將任何內容安裝到常規二進位路徑中,並且 Composer 安裝程式也沒有執行任何操作將自身添加到系統路徑中。我以前從來沒有真正面對過這個問題,因為我直接從 Composer 安裝的二進位檔案出現的任何路徑運行它們。例如,對於 Drupal,有供應商/drush/drush/drush 或供應商/bin/drush,這取決於你正在執行哪個版本。我是否需要為自己添加符號連結或別名,或者在作曲家添加的位置「全域」找到 Laravel 二進位檔案?
我不知道,所以我必須尋找這個。
我在Stack Overflow 的答案中找到了一些線索:你可以使用Composer 全域設定bin-dir --absolute 找到Composer 二進位目錄,顯然在現代版本的Composer 中,所有有執行指令的東西都會將其放入該目錄中而不是迷失在等級制度中。
好。我可以在啟動腳本中添加一些內容,將其放入我的路徑中...除了該命令生成的不僅僅是路徑...
$ 作曲家全域設定 bin-dir --absolute
將目前目錄改為 /home/moopet/.config/composer
/home/moopet/.config/composer/vendor/bin
...而且我不能使用整個字串作為目錄。也許我需要使用 tail 來獲取最後一行,或者其他東西。等等,不,這個答案還有另一個評論,其中包括 --quiet 標誌。那有什麼作用?我會嘗試composer --help:
用法:
列表 [選項] [--] []
嗯,呃,事實證明,在裸露的composer命令上運行--help實際上為list子命令提供了幫助,而不是composer本身。這讓我困惑了一分鐘。
-q --quiet 不輸出任何訊息
嗯,這聽起來沒什麼用!我們想要一些輸出。還有什麼?
--raw 輸出原始指令清單
--format=FORMAT 輸出格式(txt、xml、json 或 md)[預設值:「txt」]
也許是其中之一?
“--raw”選項不存在。
“--format”選項不存在。
不。正如我所想,這些是列出的選項,而不是通用標誌。
無論如何,讓我們用 --quiet 來運行它,只是為了便便和搞笑:
$ 作曲家全域設定 bin-dir --absolute --quiet
/home/moopet/.config/composer/vendor/bin
嗯,你知道嗎,它成功了。只是記錄得很糟。
我將使用一些保護程式碼將其彈出到我的 shell 啟動腳本中,然後我們可以繼續:
if command -v composer >/dev/null; then export PATH=$(composer global config bin-dir --absolute --quiet):$PATH fi
設定一個新的 Laravel 項目,採取 2(tldr;問題:一些,信心:動搖)
這次 Laravel 新的範例應用程式啟動,並提示我一些事情。我接受預設值,因為除了入門套件之外,我還沒有閱讀足夠的文件來了解其中的差異。我選擇“Breeze”,因為文件中就是這樣的。
它開始安裝過程,一切看起來都很好,直到:
- 根 Composer.json 需要 laravel/pint ^1.0 ->可滿足 laravel/pint[v1.0.0, v1.1.0, v1.1.1].
- laravel/pint[v1.0.0, ..., v1.1.1] 需要 ext-xml * ->您的系統中缺少它。安裝或啟用 PHP 的 xml 擴充。
等等,PHP 需要 XML 擴充嗎?這從未被列為要求!好的,我會快速安裝 php-xml。
好的,全部安裝完畢。我將再次運行設定。
laravel 新範例應用程式
在 NewCommand.php 第 789 行:
申請已存在!
哦。
因此,安裝程式完成了一半,但由於未驗證其依賴項而失敗,並使應用程式處於損壞狀態。這不是一個好兆頭。 Laravel 已經推出,什麼,版本 11?
他們現在肯定已經完成了基本的前期要求檢查了嗎?那好吧。我只需 rm -r example-app 並重新開始,沒有任何損失,因為我還沒有真正開始。
長話短說1下一個缺少的依賴項是 DOM 擴展,或者可能是 XML 擴展。或者也許是 cURL 擴充。
- phpunit/phpunit[11.0.1, ..., 11.4.3] 需要 ext-dom * ->您的系統中缺少它。安裝或啟用 PHP 的 dom 擴充功能。
- 根composer.json需要phpunit/phpunit ^11.0.1 ->可滿足 phpunit/phpunit[11.0.1, ..., 11.4.3].
所以我需要安裝 php-dom 嗎?不,嘗試其他一些。再次堆疊溢位。原來我需要安裝 php-curl。好的。
繼續。 rm -r 目錄並再次執行安裝精靈。
建立一個新的 Laravel 項目,採取 3(tldr;問題:hngg,信心:仍然搖擺不定,但因最近解決問題的成功而受到鼓舞)
它提示我使用哪個資料庫伺服器。他們所有人都在旁邊說「缺少 PDO 擴充功能」。
嘆息。
我退出安裝程序,再次刪除整個目錄,apt安裝php8.3-mysql,因為沒有直接的php-pdo包,也沒有可用的php-mysql別名,所以我做了一些煩人的apt正在尋找。
IlluminateDatabaseQueryException
SQLSTATE[HY000] [2002] 連線被拒絕(連線:mysql,SQL:選擇存在(從information_schema.tables 選擇1,其中table_schema = 'laravel_example_app' 和table_name = 'migrations' 和table_type in ('BASE TABLE', 'SYS VERSIONED' )) 作為「存在」)
現在怎麼辦? 此安裝程式從未要求我提供資料庫的連接詳細資訊。它試圖針對...某物執行 SQL 命令。誰知道呢?
碰巧的是,我在 LAN 中的另一台主機上運行了一個 MySQL 伺服器,並準備使用它(儘管我會注意到,自帶資料庫並未被列為 Laravel 的要求)。我想我應該安裝 SQLite,也許這會起作用,因為它不需要任何憑證。
sudo apt install php8.3-sqlite
再試一次。
rm -r 範例應用
laravel 新範例應用程式
...
巨大的成功。黑客的聲音“我在”。為了勝利。成功的孩子。
結論
我成功了嗎?我想。
但如果有人問我這可能需要多長時間,那麼基於熱情的文檔和聲譽,我會說 20 分鐘。如果我是為了工作而這樣做,根據開發人員的經驗估計,我的專案經理會加倍或四倍。
我真的花了多久時間?一天晚上一個小時左右,第二天一個小時左右。我並不著急,但事情並不簡單。
你知道嗎? 我對此不滿意。它沒有使用 MySQL,因為安裝程式的這一部分似乎完全損壞了。我正在使用 SQLite,這距離實際生產環境中發生的情況又更近了一步。因此,在我開始實際教學之前,TODO 清單中肯定還剩下一些事情。
但是它運行了。建置步驟聲稱他們順利進行。
我已準備好進入下一階段:修復在瀏覽器中開啟演示頁面後控制台中出現的 JsonException、語法錯誤和 ProcessTimedOutException。
呃哦。
如果一切順利就好了,嗯。
-
合唱:太晚了↩
以上是(我的第一次)安裝 Laravel的詳細內容。更多資訊請關注PHP中文網其他相關文章!

要保護應用免受與會話相關的XSS攻擊,需採取以下措施:1.設置HttpOnly和Secure標誌保護會話cookie。 2.對所有用戶輸入進行輸出編碼。 3.實施內容安全策略(CSP)限制腳本來源。通過這些策略,可以有效防護會話相關的XSS攻擊,確保用戶數據安全。

优化PHP会话性能的方法包括:1.延迟会话启动,2.使用数据库存储会话,3.压缩会话数据,4.管理会话生命周期,5.实现会话共享。这些策略能显著提升应用在高并发环境下的效率。

theSession.gc_maxlifetimesettinginphpdeterminesthelifespanofsessiondata,setInSeconds.1)它'sconfiguredinphp.iniorviaini_set().2)abalanceisesneededeededeedeedeededto toavoidperformance andunununununexpectedLogOgouts.3)

在PHP中,可以使用session_name()函數配置會話名稱。具體步驟如下:1.使用session_name()函數設置會話名稱,例如session_name("my_session")。 2.在設置會話名稱後,調用session_start()啟動會話。配置會話名稱可以避免多應用間的會話數據衝突,並增強安全性,但需注意會話名稱的唯一性、安全性、長度和設置時機。

會話ID應在登錄時、敏感操作前和每30分鐘定期重新生成。 1.登錄時重新生成會話ID可防會話固定攻擊。 2.敏感操作前重新生成提高安全性。 3.定期重新生成降低長期利用風險,但需權衡用戶體驗。

在PHP中設置會話cookie參數可以通過session_set_cookie_params()函數實現。 1)使用該函數設置參數,如過期時間、路徑、域名、安全標誌等;2)調用session_start()使參數生效;3)根據需求動態調整參數,如用戶登錄狀態;4)注意設置secure和httponly標誌以提升安全性。

在PHP中使用會話的主要目的是維護用戶在不同頁面之間的狀態。 1)會話通過session_start()函數啟動,創建唯一會話ID並存儲在用戶cookie中。 2)會話數據保存在服務器上,允許在不同請求間傳遞數據,如登錄狀態和購物車內容。

如何在子域名間共享會話?通過設置通用域名的會話cookie實現。 1.在服務器端設置會話cookie的域為.example.com。 2.選擇合適的會話存儲方式,如內存、數據庫或分佈式緩存。 3.通過cookie傳遞會話ID,服務器根據ID檢索和更新會話數據。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

Atom編輯器mac版下載
最受歡迎的的開源編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。