(我的第一次)安裝 Laravel
有時,尤其是當您剛開始職業生涯時,您似乎遵循了指示卻一事無成 - 而其他人似乎發現這非常容易。
這可能非常令人沮喪,我想描述一下即使在幾十年之後我也經歷完全相同的事情的幾種方式。所以我在這裡,試著詳細描述我在努力讓事情順利進行時所犯的錯誤和失誤。這是我關於這個主題的第一篇文章,但我希望發表更多。
讓我們來學習 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中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

PHP8.1中的枚舉功能通過定義命名常量增強了代碼的清晰度和類型安全性。 1)枚舉可以是整數、字符串或對象,提高了代碼可讀性和類型安全性。 2)枚舉基於類,支持面向對象特性,如遍歷和反射。 3)枚舉可用於比較和賦值,確保類型安全。 4)枚舉支持添加方法,實現複雜邏輯。 5)嚴格類型檢查和錯誤處理可避免常見錯誤。 6)枚舉減少魔法值,提升可維護性,但需注意性能優化。

會話劫持可以通過以下步驟實現:1.獲取會話ID,2.使用會話ID,3.保持會話活躍。在PHP中防範會話劫持的方法包括:1.使用session_regenerate_id()函數重新生成會話ID,2.通過數據庫存儲會話數據,3.確保所有會話數據通過HTTPS傳輸。

SOLID原則在PHP開發中的應用包括:1.單一職責原則(SRP):每個類只負責一個功能。 2.開閉原則(OCP):通過擴展而非修改實現變化。 3.里氏替換原則(LSP):子類可替換基類而不影響程序正確性。 4.接口隔離原則(ISP):使用細粒度接口避免依賴不使用的方法。 5.依賴倒置原則(DIP):高低層次模塊都依賴於抽象,通過依賴注入實現。

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

RESTAPI設計原則包括資源定義、URI設計、HTTP方法使用、狀態碼使用、版本控制和HATEOAS。 1.資源應使用名詞表示並保持層次結構。 2.HTTP方法應符合其語義,如GET用於獲取資源。 3.狀態碼應正確使用,如404表示資源不存在。 4.版本控制可通過URI或頭部實現。 5.HATEOAS通過響應中的鏈接引導客戶端操作。

在PHP中,異常處理通過try,catch,finally,和throw關鍵字實現。 1)try塊包圍可能拋出異常的代碼;2)catch塊處理異常;3)finally塊確保代碼始終執行;4)throw用於手動拋出異常。這些機制幫助提升代碼的健壯性和可維護性。

匿名類在PHP中的主要作用是創建一次性使用的對象。 1.匿名類允許在代碼中直接定義沒有名字的類,適用於臨時需求。 2.它們可以繼承類或實現接口,增加靈活性。 3.使用時需注意性能和代碼可讀性,避免重複定義相同的匿名類。
