[Laravel] 環境架設 linux篇 (Ubuntu)

驚不驚喜,意不意外
 [Laravel] 環境架設 mac篇
[Laravel] 環境架設 windows 篇 - 使用wagon 後再來個 linux
一整個安裝大滿貫
起因是我換工作了,原本的 mac 是公司的就收回去啦
新公司的電腦是桌上型的,所以離開公司就沒得用了
自己買不起 mac 只有很舊的小筆電,雖然可以開 docker 不過太當了
直接一個怒灌 Ubuntu 不得不說真的變快很多呢
然後就要來弄環境啦,不得不說真的遇到很多坑

首先先去下載 docker 照著官網安裝只要可以正常啟動就好了
Ubuntu 軟體市集也有資源可以下載來用,真的很方便

安裝好 docker 之後跟 mac 環境下一樣
安裝 composer 弄成全域變數,這邊值得一提的是
因為 mac 是 unix like 所以 mac 上面那套步驟可以直接應用在 Ubuntu 上面
於是應該可以順利的安裝完 composer 和 laravel
這時候可以先測試 phpinfi(); 看 docker 有沒有正確的把環境建立

laravel 指令這點當初踩了一個雷就是 這個
而且不管我怎麼照著教學改 ~/.bashrc 我的 laravel 都沒有加入指令
最後還是求助於人才發現
因為這是預設原生使用 bash 的情況下
而我因為習慣裝了zsh
所以我該改的是 .zshrc ,如果没有 .zshrc,找 .zsh_profile

解決完這個問題之後,應該就可以使用 laravel new project 來建立專案了
建好之後當然想到要先 composer install 因為我們沒有 vendor 資料夾
這時候你會遇到這些問題,告訴你有些 php 擴充沒有安裝
但是我在 phpinfo 下面都看到他們是 enable 的,為了這個我崩潰了四天


以下是大佬指點的最終解決步驟
為了測試是否是我的 dockerfile 出問題
我執行 docker exec -ti php sh 進入名為 php 的 container 裡面
注意,這邊是因為我的 image 選擇 alpine 版本
如果是一般的 fpm 版本,則是 docker exec -ti php bash
進到容器內後,執行 php --ini  確認 php 擴充是否有被開啟
這邊我們看到並沒有相關內容
再來執行 php -a 這會進入 php 的執行模式
我們可以直接在裡面測試 function 有沒有運作
如圖所示

可以發現我們的 mb_ 系列 function 其實是有安裝上的,那就竟是什麼問題呢?

後來終於突破盲點啦,我一直在容器外面執行 composer install
應該要進到 php continer 裡面之後安裝composer 設成全域變數
這邊和 mac 有點不同的地方是,mac 是把 composer.phar 移到 /usr/local/bin/ 底下
而在 container 中我們移到 /usr/bin/ ,而中間差異要我需要再找時間嘗試

因為原本 mac 環境下預設是會都裝上去的... 這個真的需要有經驗的人才會發現
於是在容器內 composer install 應該就會正確開始執行了
然後建議不要在 Ubuntu 手動安裝缺少的內容
如果預設的 C compiler 裝一些 so 檔就會出問題,nodejs會有這種問題
對惹,因為是在 container 裡面安裝的,所以如果你
docker-compose down  把 container 關掉的話,你下次就重啟就要重新安裝
然後記得開資料夾權限,不然 laravel 還是會出錯
會跟你說某個 log 檔案讀寫權限不足

於是這就是這次在 Ubuntu 上面安裝 Laravel 環境遇到的問題跟解決步驟
雖然是順利的安裝好了,不過我買 mac 的決心又更堅定了呢

留言