有時,尤其是當您剛開始職業生涯時,您似乎遵循了指示卻一事無成 - 而其他人似乎發現這非常容易。
這可能非常令人沮喪,我想描述一下即使在幾十年之後我也經歷完全相同的事情的幾種方式。所以我在這裡,試著詳細描述我在努力讓事情順利進行時所犯的錯誤和失誤。這是我關於這個主題的第一篇文章,但我希望發表更多。
Laravel 致力於提供令人驚嘆的開發者體驗 [...]
無論您是 PHP Web 框架新手還是擁有多年經驗 [...]
Laravel 被譽為“開發人員的框架”,至少在 PHP 圈子裡是這樣,因為它比其他框架更簡單,並且需要簡單而嚴格的架構決策。我已經完成了其他一些 PHP 框架 - Drupal 7 、Drupal 8、Symfony、WordPress、Concrete5、PrestaShop、CodeIgniter 從我的腦海中浮現出來 - 所以我不打算討論這個毫無準備。
我將從一台準系統筆記型電腦開始,看看我能走多遠。
在建立您的第一個 Laravel 應用程式之前,請確保您的本機電腦已安裝 PHP、Composer 和 Laravel 安裝程式。此外,您應該安裝 Node 和 NPM 或 Bun,以便可以編譯應用程式的前端資產。
好的。不是問題。我將自己安裝一些 PHP,從 getcomposer.org 取得 Composer,並弄清楚下一步如何安裝「Laravel 安裝程式」。顯然我的發行版已經安裝了 Node 22,或者是我之前設定其他東西時安裝的,所以應該涵蓋這一點。
$ 作曲家全域需要 laravel/installer
繁榮。完畢。還沒有問題,我們有了一個好的開始,信心空前高漲。
$ 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 新的範例應用程式啟動,並提示我一些事情。我接受預設值,因為除了入門套件之外,我還沒有閱讀足夠的文件來了解其中的差異。我選擇“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 目錄並再次執行安裝精靈。
它提示我使用哪個資料庫伺服器。他們所有人都在旁邊說「缺少 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中文網其他相關文章!