SlideShare a Scribd company logo
1 of 63
Download to read offline
啟動 Laravel 與環境設定
范聖佑 Shengyou Fan
新北市樹林國⼩小 (2015/07/07)
適
⽤用
5.1
版
單元主題
• 學習如何建⽴立全新的 Laravel 5.1 專案
- 使⽤用 Composer
- 使⽤用 laravel-installer
• 了解 Laravel 的專案資料夾結構
• 了解 Laravel 的環境變數設定⽅方式
• 建⽴立第⼀一個 git 版本儲存庫
建⽴立	
  Laravel	
  5.1	
  專案
Modern PHP 的開發架構
瀏覽網⾴頁
使⽤用者端 HTTP
伺服器 index.php
public/ 網站根⺫⽬目錄
應⽤用程式進⼊入點
vendor/
元件 A
元件 B
由 Composer 統⼀一
管理第三⽅方元件
config/
共⽤用設定檔
應⽤用程式類別
app/
⾃自⾏行依需求規劃應
⽤用程式⺫⽬目錄架構
PSR-4 類別對應點
新架構解決的問題
• 以往網址會曝露出程式語⾔言副檔名,除了網址較不
好看外,也容易讓駭客知道伺服器端使⽤用的技術,
較容易針對該語⾔言弱點進⾏行攻擊
• ⼀一改以往網址是由瀏覽的路徑由檔名決定,新架構
透過 Route 可以讓網址更符合語意及 RESTful
• 以往所有的程式碼都放在 Document Root 底下,若
HTTP 伺服器沒有設定好或被破解,有可能讓所有源
始碼及系統設定等機敏資訊曝露出來
• 新架構的 Document Root 底下只有⼀一個 index.php 做
為程式進⼊入點,其餘程式都放置在網路伺服器⾮非公
開之處,可增加程式安全性
Modern PHP 框架的 Skeleton
• 由於 PHP-FIG 組織的成⽴立、Composer 的興起,各
Modern PHP 框架在新版都將框架內的各功能組件獨
⽴立成 PHP 元件。因此,就算不是使⽤用該框架的開發
者,也能使⽤用該框架的元件另作他途
• ⽽而各框架為了讓其開發者有⼀一個「啟始包」,可以迅
速的架起⼀一個網路應⽤用程式雛型。因此,各框架也將
⾃自⾝身框架的 Skeleton 包裝成⼀一個 Composer 元件
• 在 Laravel 的世界裡,laravel/laravel 這個
Composer 元件就是 Laravel 框架的 Skeleton。我們可
以透過 composer	
  create-­‐project 來啟動⼀一個
Laravel 專案
在 Packagist 上查詢元件資訊
作者資訊
版本資訊
套件資訊
相依資訊
$	
  composer	
  create-­‐project	
  laravel/laravel	
  -­‐-­‐prefer-­‐dist
(⽤用 Composer 建⽴立 Laravel 專案 skeleton)
★ 官⽅方⽂文件:http://laravel.com/docs/5.1#installation
composer	
  create-­‐project
• 使⽤用 Composer 建⽴立 Laravel Skeleton
- Composer 可以透過 create-project 指令將某個元件做為
建⽴立專案啟始包的⼀一種⽅方式
- ⺫⽬目前各主流框架都是透過這種⽅方式來建⽴立 Skeleton,⽽而
⾮非傳統下載 zip 檔
• 範例:
$	
  composer	
  create-­‐project	
  vendor/package	
  {target-­‐directory}	
  
[version]	
  -­‐-­‐prefer-­‐dist
參數說明:	
  	
  
vendor:元件開發者名稱	
  
package:元件名稱	
  
target-­‐directory:預定建⽴立的資料夾名稱	
  
version:預定使⽤用的版本	
  
-­‐-­‐prefer-­‐dist:使⽤用	
  zip	
  散佈檔⽽而不要	
  clone	
  整個源始碼
採⽤用 laravel-­‐installer 安裝
• Composer 在取得套件相依資訊及下載元件時的速度
會受到機器運算能⼒力及網路下載速度影響其運⾏行速
度
• 為了加快產⽣生專案啟始包的速度,Laravel 官⽅方釋出
laravel-­‐installer 指令列⼯工具,讓我們可以迅速
的完成 composer	
  create-­‐project 所執⾏行的動作
• 在使⽤用之前,需要先安裝 Composer Global Package
才能取⽤用 laravel-­‐installer 指令 (請參考前⼀一章的教學
內容)
$	
  laravel	
  new	
  [project-­‐name]
(速度++)
★ 官⽅方⽂文件:http://laravel.com/docs/5.1#installation
⽤用 laravel-installer 建⽴立 laravel 專案 skeleton
移除不必要檔案
• 專案內的說明檔可以移除,包括:
- readme.md
驗證安裝成功
• 開啟 UwAmp,確認 Document Root 指向 Laravel 專
案的 public,並啟動 Server
• 打開瀏覽器:http://localhost:8000
確認
安裝成功
安裝疑難排解
遇到 Github 流量上限
• Composer 在下載套件時,由於⼤大量依賴 Github 做
為下載來源。若⾃自⼰己在練習時重覆啟動數個 Laravel
專案多次;或是如⼯工作坊在電腦教室練習時,對外
IP 都是相同的狀況下,很容易因為⼤大量相同來源的
下載要求⽽而⽤用盡 Github 的下載流量上限
• 這時需要⽤用⾃自⼰己的 Github 帳號登⼊入 Github,並到帳
號設定內啟動⼀一組 token 供 Composer 使⽤用,設定成
功後就可以讓 Composer 繼續下載 (請事先申請 Github 帳號)
Composer 已達下載上限
⾄至 Github 帳號設定
產⽣生新的 token
設定 token 名稱及權限
將 token 設定給 Composer
⼀一時之間網路出問題
• 若是因為網路暫時出問題,⽽而無法透過 Composer
或 laravel-installer 從遠端取得 Laravel Skelton 的話,
可以先暫時使⽤用 wagon 內建的 Laravel 打包版做為替
代⽅方案:
- 先將 laravel5.1.2.zip 檔案解壓縮
- 將資料夾移⾄至 uwampwww 底下
- 使⽤用 composer	
  run-­‐script 指令執⾏行未完成的啟
始動作
Laravel 專案啟動時的動作
• 使⽤用 Composer 啟動 Laravel Skelton 時,預設會進⾏行
以下幾個動作:
1. 將 .env.example 檔案複製⼀一份成 .env
2. 最佳化 Class ⾃自動載⼊入
3. 產⽣生應⽤用程式⾦金鑰
scripts 區段設定
"scripts":	
  {	
  
	
   "post-­‐install-­‐cmd":	
  [	
  
	
   	
   "php	
  artisan	
  clear-­‐compiled",	
  
	
   	
   "php	
  artisan	
  optimize"	
  
	
   ],	
  
	
   "pre-­‐update-­‐cmd":	
  [	
  
	
   	
   "php	
  artisan	
  clear-­‐compiled"	
  
	
   ],	
  
	
   "post-­‐update-­‐cmd":	
  [	
  
	
   	
   "php	
  artisan	
  optimize"	
  
	
   ],	
  
	
   "post-­‐root-­‐package-­‐install":	
  [	
  
	
   	
   "php	
  -­‐r	
  "copy('.env.example',	
  '.env');""	
  
	
   ],	
  
	
   "post-­‐create-­‐project-­‐cmd":	
  [	
  
	
   	
   "php	
  artisan	
  key:generate"	
  
	
   ]	
  
},
laravel-installer 的動作
composer	
  run-­‐script
• Composer 可以透過 run-­‐script 來執⾏行
composer.json 內設定好的 scripts 動作
• 若是因為某些原因⽽而需要再次執⾏行 scripts 動作,可
⽤用此種⽅方式觸發
• 範例:
$	
  composer	
  run-­‐script	
  post-­‐root-­‐package-­‐install	
  
$	
  composer	
  run-­‐script	
  post-­‐install-­‐cmd	
  
$	
  composer	
  run-­‐script	
  post-­‐create-­‐project-­‐cmd
$	
  composer	
  run-­‐script	
  {event}
(執⾏行 composer.json 內的 script 動作)
Laravel	
  資料夾結構
★ 參考⽂文件:http://laravel.com/docs/5.1/structure
兩個 composer 檔案
根⺫⽬目錄底下有兩個 Composer 檔案:composer.json 及 composer.lock,
是⽤用來設定 Laravel 套件相依性之⽤用
Laravel 的 composer.json
{	
  
	
   "name":	
  "{vendor}/{package-­‐name}",	
  
	
   "description":	
  "{package	
  description}",	
  
	
   "keywords":	
  ["{keyword1}",	
  "{keyword2}"],	
  
	
   "license":	
  "{license}",	
  
	
   "type":	
  "project",	
  
	
   "require":	
  {	
  
	
   	
   "php":	
  ">=5.5.9",	
  
	
   	
   "laravel/framework":	
  "5.1.*"	
  
	
   },	
  
	
   "require-­‐dev":	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  "fzaninotto/faker":	
  "~1.4",	
  
	
  	
  	
  	
  	
  	
  	
  	
  "mockery/mockery":	
  "0.9.*",	
  
	
  	
  	
  	
  	
  	
  	
  	
  "phpunit/phpunit":	
  "~4.0",	
  
	
  	
  	
  	
  	
  	
  	
  	
  "phpspec/phpspec":	
  "~2.1"	
  
	
   },	
  
	
  	
  	
  /*	
  以下暫略	
  */	
  
}
私有專案⽤用:proprietary
格式:"vendor/package-­‐name":	
  "version"
composer.lock 的作⽤用
• 每當 Composer 分析完套件相依性、決定此次要安
裝的元件時,就會將每⼀一個元件的安裝版本資訊寫
⼊入 composer.lock 檔內
• 如同其名,lock 檔的作⽤用就是把⺫⽬目前的相依性「鎖
定」在這個檔案裡。換⾔言之,當團隊內的其他成員
拿到源始碼時,只要執⾏行 composer	
  install,就
可以安裝⼀一模⼀一樣的元件版本,避免發⽣生成員間因
元件版本不同⽽而產⽣生的開發錯誤
• 總⾔言之,請把 composer.lock 放⼊入版本控制系統內
app
app 是 Laravel 程式核⼼心 class 集中放置處,由於 Laravel 5.1 已全⾯面⽀支
援 PSR-4 規範,在此資料夾內新增 class 時,請依規範加 namespace
PSR-4 載⼊入設定
{	
  
	
  	
  	
  /*	
  以上暫略	
  */	
  
	
   "autoload":	
  {	
  
	
   	
   "classmap":	
  [	
  
	
   	
   	
   "database"	
  
	
   	
   ],	
  
	
   	
   "psr-­‐4":	
  {	
  
	
   	
   	
   "App":	
  "app/"	
  
	
   	
   }	
  
	
   },	
  
	
   "autoload-­‐dev":	
  {	
  
	
   	
   "classmap":	
  [	
  
	
   	
   	
   "tests/TestCase.php"	
  
	
   	
   ]	
  
	
   },	
  
	
  	
  	
  /*	
  以下暫略	
  */	
  
}
依	
  PSR-­‐4	
  載⼊入	
  class	
  設定	
  
新增	
  class	
  在	
  app	
  資料夾
時,請注意	
  namespace
bootstrap
bootstrap 是 Laravel 的啟始引擎,功能在於呼叫 Composer 的⾃自動載
⼊入以及啟動 App 核⼼心物件。底下的 cache 資料夾是⽤用來存放框架啟動
最佳化的快取檔
config
config 是 Laravel 放置所有設定檔的資料夾,不論是 Laravel 原⽣生提供
的設定或是其他套件提供的設定檔皆是放置在此
database
database 資料夾內有 3 個⼦子資料夾。migrations 放置所有資料庫變更紀
錄的操作 class;seeds 則是放置產⽣生測試假資料⽤用的 class;factories
則是 5.1 新增產⽣生 Model 欄位資料對應的 class
public
public 資料夾是 HTTP 伺服器設定 Document Root 的位置,裡⾯面的
index.php 是應⽤用程式進⼊入點,還包括所有公開檔案如 favicon.ico…
resources
resources 資料夾內有三個資料夾,分別放置 views 樣板檔案、lang 多
國語系對照表以及 assets 各種前端素材
storage
storage 資料夾存放所有框架動態產⽣生的檔案,包括:編譯過的 view、
儲存的 session 紀錄、快取、log 等…
tests
tests 資料夾存放所有關於測試⽤用的檔案,Laravel 內定使⽤用 PHPUnit
來做測試,裡⾯面已經有⼀一個範例檔在其中
vendor
vendor 資料夾是所有透過 Composer 安裝的第三⽅方套件,⼀一般⽽而⾔言不
需要更動裡⾯面的內容,在版本控制系統裡也會忽略它
建⽴立第⼀一個	
  git	
  存檔點
開啟書籤管理
新增⼀一個儲存庫
操作介⾯面
書籤管理
常⽤用功能鈕
working directory
staging area
檔案差異
儲存庫⾴頁籤
儲存⼀一個版本
加⼊入檔案
輸⼊入儲存紀錄
瀏覽 git 線圖
git ⼯工作流程概念
★ 圖⽚片來源:http://thkoch2001.github.io/whygitisbetter/images/local-remote.png
.gitignore
• 有⼀一些檔案 (⽐比⽅方說 IDE 的設定檔) 我們不想要放到
版本控制系統裡,希望 git 可以⾃自動忽略這些檔案
• 只要把想忽略的規則寫⼊入 .gitignore 裡並 commit 到
儲存庫,⽇日後 git 就會⾃自動忽略這些檔案
存檔點
• 試著把現在已經可以運作的程式碼加⼊入版本控制內
• 流程提醒:
- 建⽴立⼀一個新的儲存庫
- working directory > staging area > commit
Laravel	
  環境設定
★ 參考⽂文件:http://laravel.com/docs/5.1/installation#environment-configuration
開發流程與階段
[ development ]
開發⽤用、測試⽤用
[ local ]
本機端開發
[ staging ]
階段性發佈
[ production ]
正式上線
每個開發夥伴本機端
獨⽴立開發,開發完成
後送回版本控制系統
[version control]
原始碼管理
定期從版本控制系統
取出後,進⾏行整合、
單元等測試
專案階段完成後,進
⾏行階段性發佈,給客
⼾戶測試、確認
所有階段完成後佈署
⾄至正式主機,對外公
開使⽤用
什麼是環境設定?
• 如上圖,在⼀一個網路應⽤用程式的開發過程中,程式
碼會依照不同的開發階段被部署在不同的機器上
• 常⾒見的實際狀況是,不同開發階段的機器可能會有
不同的設定值,如 DB 名稱、DB 帳號、DB 密碼等
• 在以往的作法裡,可能會將這些設定值寫死在⼀一個
config.php 的檔案內,並在所有的⾴頁⾯面裡載⼊入
• 將設定值寫死在程式碼內並放到版本控制系統裡,
除了會有機敏資訊曝光的⾵風險,在更換機器時也會
需求⼿手動修改這個檔案以適應不同的機器,無法讓
部署流程⾃自動化
Laravel 的環境設定設計
• Laravel 的環境設定設計,是透過在根⺫⽬目錄放置⼀一
個 .env 的設定檔,在設定檔內紀錄所有的設定值。
⽽而在程式運⾏行時,透過 env('CONFIG_KEY') 載⼊入
設定檔內的設定值
• .env 這個檔案預設就設定在 .gitignore 裡排除。也就
是說,.env 這個檔案不會被送⼊入版本控制系統內,
以免除機敏資訊被公開的⾵風險
• 透過環境變數的設計,讓程式碼可動態適應不同機
器上的不同設定,減少佈署時需⼿手動調整設定的負
擔
如何知道⺫⽬目前的環境?
$	
  php	
  artisan	
  env
使⽤用 artisan 指令查詢⺫⽬目前的環境
什麼是 artisan?
• Laravel 專屬的指令列⼯工具,協助我們完成⽇日常繁瑣
⼯工作事務,如:
• 最佳化 (optimize) 應⽤用程式
- 清快取 (cache)、控制 queue
- tinker 模式、maintenance 模式
• 可簡化眾多開發⼯工作及時程,如:
- ⾃自動幫忙產⽣生想要的 class skeleton,少打⼀一些鍵盤
- ⾃自動最佳化 Laravel、啟動常⽤用的⼯工具
$	
  [php]	
  artisan	
  env
了解⺫⽬目前	
  Laravel	
  使⽤用的環境設定
artisan	
  env
• 回傳 Laravel ⺫⽬目前所在環境
- artisan 會回傳⺫⽬目前 Laravel ⺫⽬目前的環境變數設定
• 範例:
$	
  php	
  artisan	
  env
如何修改環境設定?
APP_ENV=local	
  
APP_DEBUG=true	
  
APP_KEY=SomeRandomString	
  
DB_HOST=localhost	
  
DB_DATABASE=homestead	
  
DB_USERNAME=homestead	
  
DB_PASSWORD=secret
編輯 .env 檔案
透過 artisan 驗證
$	
  php	
  artisan	
  env
設定/產⽣生 APP_KEY
• 在環境設定檔 (.env) 裡,有⼀一個 APP_KEY,是
Laravel 在應⽤用程式運作時,⽤用做加密運算使⽤用的
Key 值,其為⼀一組 32 字元⻑⾧長的隨機字串
• 在建⽴立新專案時,Composer 會透過 post-­‐create-­‐
project-­‐cmd 內的指令來產⽣生⼀一組新的 Key,並將
其紀錄在 .env 檔案內
• 產⽣生 APP_KEY 也可以透過 artisan 指令來重新產
⽣生
$	
  [php]	
  artisan	
  key:generate
產⽣生	
  Laravel	
  要使⽤用的	
  APP_KEY	
  並存在	
  .env	
  內
artisan	
  key:generate
• 產⽣生 APP_KEY
- artisan 會產⽣生⼀一組 32 字元⻑⾧長的隨機字串,並將其
紀錄在 .env 裡
• 範例:
$	
  php	
  artisan	
  key:generate	
  
Application	
  key	
  [xxxxxxxxxxxxxxxxxx]	
  set	
  successfully
單元總結
• 在這個單元裡我們學到了些什麼?
- 透過兩種⽅方式建⽴立新的 Laravel 專案
- 了解 Laravel 的專案資料夾結構
- 如何設定 Laravel 的環境變數
- 學習使⽤用 artisan 指令列⼯工具
Q & A
歡迎提問討論

More Related Content

What's hot

PHPCon China 2016 - 從學徒變大師:談 Laravel 框架擴充與套件開發
PHPCon China 2016 - 從學徒變大師:談 Laravel 框架擴充與套件開發PHPCon China 2016 - 從學徒變大師:談 Laravel 框架擴充與套件開發
PHPCon China 2016 - 從學徒變大師:談 Laravel 框架擴充與套件開發Shengyou Fan
 
[Community Open Camp] 給 PHP 開發者的 VS Code 指南
[Community Open Camp] 給 PHP 開發者的 VS Code 指南[Community Open Camp] 給 PHP 開發者的 VS Code 指南
[Community Open Camp] 給 PHP 開發者的 VS Code 指南Shengyou Fan
 
Ansible Tutorial.pdf
Ansible Tutorial.pdfAnsible Tutorial.pdf
Ansible Tutorial.pdfNigussMehari4
 
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具Shengyou Fan
 
PHP unserialization vulnerabilities: What are we missing?
PHP unserialization vulnerabilities: What are we missing?PHP unserialization vulnerabilities: What are we missing?
PHP unserialization vulnerabilities: What are we missing?Sam Thomas
 
FHIR Server 安裝與使用
FHIR Server 安裝與使用FHIR Server 安裝與使用
FHIR Server 安裝與使用Lorex L. Yang
 
Flutter 踩雷心得
Flutter 踩雷心得Flutter 踩雷心得
Flutter 踩雷心得Weizhong Yang
 
Route 路由控制
Route 路由控制Route 路由控制
Route 路由控制Shengyou Fan
 
Maven 3 Overview
Maven 3  OverviewMaven 3  Overview
Maven 3 OverviewMike Ensor
 
Intro to vue.js
Intro to vue.jsIntro to vue.js
Intro to vue.jsTechMagic
 
[PHP 也有 Day #64] PHP 升級指南
[PHP 也有 Day #64] PHP 升級指南[PHP 也有 Day #64] PHP 升級指南
[PHP 也有 Day #64] PHP 升級指南Shengyou Fan
 
中正大學/FHIR 快速掃描 R4 版本
中正大學/FHIR 快速掃描 R4 版本中正大學/FHIR 快速掃描 R4 版本
中正大學/FHIR 快速掃描 R4 版本Lorex L. Yang
 
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者Shengyou Fan
 
給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發Weizhong Yang
 
Original slides from Ryan Dahl's NodeJs intro talk
Original slides from Ryan Dahl's NodeJs intro talkOriginal slides from Ryan Dahl's NodeJs intro talk
Original slides from Ryan Dahl's NodeJs intro talkAarti Parikh
 
Introduction to GNU Make Programming Language
Introduction to GNU Make Programming LanguageIntroduction to GNU Make Programming Language
Introduction to GNU Make Programming LanguageShih-Hsiang Lin
 

What's hot (20)

PHPCon China 2016 - 從學徒變大師:談 Laravel 框架擴充與套件開發
PHPCon China 2016 - 從學徒變大師:談 Laravel 框架擴充與套件開發PHPCon China 2016 - 從學徒變大師:談 Laravel 框架擴充與套件開發
PHPCon China 2016 - 從學徒變大師:談 Laravel 框架擴充與套件開發
 
Apache Maven
Apache MavenApache Maven
Apache Maven
 
[Community Open Camp] 給 PHP 開發者的 VS Code 指南
[Community Open Camp] 給 PHP 開發者的 VS Code 指南[Community Open Camp] 給 PHP 開發者的 VS Code 指南
[Community Open Camp] 給 PHP 開發者的 VS Code 指南
 
Maven tutorial
Maven tutorialMaven tutorial
Maven tutorial
 
Ansible Tutorial.pdf
Ansible Tutorial.pdfAnsible Tutorial.pdf
Ansible Tutorial.pdf
 
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
 
PHP unserialization vulnerabilities: What are we missing?
PHP unserialization vulnerabilities: What are we missing?PHP unserialization vulnerabilities: What are we missing?
PHP unserialization vulnerabilities: What are we missing?
 
Git hooks
Git hooksGit hooks
Git hooks
 
FHIR Server 安裝與使用
FHIR Server 安裝與使用FHIR Server 安裝與使用
FHIR Server 安裝與使用
 
Flutter 踩雷心得
Flutter 踩雷心得Flutter 踩雷心得
Flutter 踩雷心得
 
Route 路由控制
Route 路由控制Route 路由控制
Route 路由控制
 
Maven 3 Overview
Maven 3  OverviewMaven 3  Overview
Maven 3 Overview
 
Apache maven 2 overview
Apache maven 2 overviewApache maven 2 overview
Apache maven 2 overview
 
Intro to vue.js
Intro to vue.jsIntro to vue.js
Intro to vue.js
 
[PHP 也有 Day #64] PHP 升級指南
[PHP 也有 Day #64] PHP 升級指南[PHP 也有 Day #64] PHP 升級指南
[PHP 也有 Day #64] PHP 升級指南
 
中正大學/FHIR 快速掃描 R4 版本
中正大學/FHIR 快速掃描 R4 版本中正大學/FHIR 快速掃描 R4 版本
中正大學/FHIR 快速掃描 R4 版本
 
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
 
給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發
 
Original slides from Ryan Dahl's NodeJs intro talk
Original slides from Ryan Dahl's NodeJs intro talkOriginal slides from Ryan Dahl's NodeJs intro talk
Original slides from Ryan Dahl's NodeJs intro talk
 
Introduction to GNU Make Programming Language
Introduction to GNU Make Programming LanguageIntroduction to GNU Make Programming Language
Introduction to GNU Make Programming Language
 

Viewers also liked

Package 安裝與使用
Package 安裝與使用Package 安裝與使用
Package 安裝與使用Shengyou Fan
 
開發環境建置
開發環境建置開發環境建置
開發環境建置Shengyou Fan
 
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎Shengyou Fan
 
Migrations 與 Schema 操作
Migrations 與 Schema 操作Migrations 與 Schema 操作
Migrations 與 Schema 操作Shengyou Fan
 
Model 設定與 Seeding
Model 設定與 SeedingModel 設定與 Seeding
Model 設定與 SeedingShengyou Fan
 
Schema & Migration操作
Schema & Migration操作Schema & Migration操作
Schema & Migration操作Shengyou Fan
 
開發流程與工具介紹
開發流程與工具介紹開發流程與工具介紹
開發流程與工具介紹Shengyou Fan
 
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎Shengyou Fan
 
應用程式佈署
應用程式佈署應用程式佈署
應用程式佈署Shengyou Fan
 
開發環境建置
開發環境建置開發環境建置
開發環境建置Shengyou Fan
 
使用 Eloquent ORM
使用 Eloquent ORM使用 Eloquent ORM
使用 Eloquent ORMShengyou Fan
 

Viewers also liked (20)

Package 安裝與使用
Package 安裝與使用Package 安裝與使用
Package 安裝與使用
 
開發環境建置
開發環境建置開發環境建置
開發環境建置
 
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
 
Migrations 與 Schema 操作
Migrations 與 Schema 操作Migrations 與 Schema 操作
Migrations 與 Schema 操作
 
Model 設定與 Seeding
Model 設定與 SeedingModel 設定與 Seeding
Model 設定與 Seeding
 
Eloquent ORM
Eloquent ORMEloquent ORM
Eloquent ORM
 
工作坊簡介
工作坊簡介工作坊簡介
工作坊簡介
 
CRUD 綜合運用
CRUD 綜合運用CRUD 綜合運用
CRUD 綜合運用
 
驗證與訊息
驗證與訊息驗證與訊息
驗證與訊息
 
整合 Open ID
整合 Open ID整合 Open ID
整合 Open ID
 
工作坊總結
工作坊總結工作坊總結
工作坊總結
 
Route 機制
Route 機制Route 機制
Route 機制
 
Schema & Migration操作
Schema & Migration操作Schema & Migration操作
Schema & Migration操作
 
開發流程與工具介紹
開發流程與工具介紹開發流程與工具介紹
開發流程與工具介紹
 
使用者認證
使用者認證使用者認證
使用者認證
 
課程簡介
課程簡介課程簡介
課程簡介
 
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
 
應用程式佈署
應用程式佈署應用程式佈署
應用程式佈署
 
開發環境建置
開發環境建置開發環境建置
開發環境建置
 
使用 Eloquent ORM
使用 Eloquent ORM使用 Eloquent ORM
使用 Eloquent ORM
 

Similar to 啟動 Laravel 與環境設定

專案啟動與環境設定
專案啟動與環境設定專案啟動與環境設定
專案啟動與環境設定Shengyou Fan
 
Docker tutorial
Docker tutorialDocker tutorial
Docker tutorialazole Lai
 
GNU Autoconf / Automake #1
GNU Autoconf / Automake #1GNU Autoconf / Automake #1
GNU Autoconf / Automake #1imacat .
 
使用Samba提升linux平台开发效率
使用Samba提升linux平台开发效率使用Samba提升linux平台开发效率
使用Samba提升linux平台开发效率Zhen Li
 
使用Samba提升linux平台开发效率
使用Samba提升linux平台开发效率使用Samba提升linux平台开发效率
使用Samba提升linux平台开发效率Zhen Li
 
專案啟動與設定
專案啟動與設定專案啟動與設定
專案啟動與設定Shengyou Fan
 
C语言benchmark覆盖信息收集总结4
C语言benchmark覆盖信息收集总结4C语言benchmark覆盖信息收集总结4
C语言benchmark覆盖信息收集总结4Tao He
 
Lucene 全文检索实践
Lucene 全文检索实践Lucene 全文检索实践
Lucene 全文检索实践yiditushe
 
基于Symfony框架下的快速企业级应用开发
基于Symfony框架下的快速企业级应用开发基于Symfony框架下的快速企业级应用开发
基于Symfony框架下的快速企业级应用开发mysqlops
 
Maven初级培训
Maven初级培训Maven初级培训
Maven初级培训Cody Zhang
 
GNU Autoconf / Automake #4
GNU Autoconf / Automake #4GNU Autoconf / Automake #4
GNU Autoconf / Automake #4imacat .
 
Package安裝與使用
Package安裝與使用Package安裝與使用
Package安裝與使用Shengyou Fan
 
Subversion
SubversionSubversion
Subversioni7Xh
 
ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索Will Huang
 
Flex 入门培训
Flex 入门培训Flex 入门培训
Flex 入门培训7rice
 
Laravel 5.2 教學
Laravel 5.2 教學Laravel 5.2 教學
Laravel 5.2 教學Cloud Wu
 
Nagios的安装部署和与cacti的整合(linuxtone)
Nagios的安装部署和与cacti的整合(linuxtone)Nagios的安装部署和与cacti的整合(linuxtone)
Nagios的安装部署和与cacti的整合(linuxtone)Yiwei Ma
 
自动生成 Makefile 的全过程详解!
自动生成 Makefile 的全过程详解!自动生成 Makefile 的全过程详解!
自动生成 Makefile 的全过程详解!hik_lhz
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型Jackson Tian
 
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來Shengyou Fan
 

Similar to 啟動 Laravel 與環境設定 (20)

專案啟動與環境設定
專案啟動與環境設定專案啟動與環境設定
專案啟動與環境設定
 
Docker tutorial
Docker tutorialDocker tutorial
Docker tutorial
 
GNU Autoconf / Automake #1
GNU Autoconf / Automake #1GNU Autoconf / Automake #1
GNU Autoconf / Automake #1
 
使用Samba提升linux平台开发效率
使用Samba提升linux平台开发效率使用Samba提升linux平台开发效率
使用Samba提升linux平台开发效率
 
使用Samba提升linux平台开发效率
使用Samba提升linux平台开发效率使用Samba提升linux平台开发效率
使用Samba提升linux平台开发效率
 
專案啟動與設定
專案啟動與設定專案啟動與設定
專案啟動與設定
 
C语言benchmark覆盖信息收集总结4
C语言benchmark覆盖信息收集总结4C语言benchmark覆盖信息收集总结4
C语言benchmark覆盖信息收集总结4
 
Lucene 全文检索实践
Lucene 全文检索实践Lucene 全文检索实践
Lucene 全文检索实践
 
基于Symfony框架下的快速企业级应用开发
基于Symfony框架下的快速企业级应用开发基于Symfony框架下的快速企业级应用开发
基于Symfony框架下的快速企业级应用开发
 
Maven初级培训
Maven初级培训Maven初级培训
Maven初级培训
 
GNU Autoconf / Automake #4
GNU Autoconf / Automake #4GNU Autoconf / Automake #4
GNU Autoconf / Automake #4
 
Package安裝與使用
Package安裝與使用Package安裝與使用
Package安裝與使用
 
Subversion
SubversionSubversion
Subversion
 
ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索
 
Flex 入门培训
Flex 入门培训Flex 入门培训
Flex 入门培训
 
Laravel 5.2 教學
Laravel 5.2 教學Laravel 5.2 教學
Laravel 5.2 教學
 
Nagios的安装部署和与cacti的整合(linuxtone)
Nagios的安装部署和与cacti的整合(linuxtone)Nagios的安装部署和与cacti的整合(linuxtone)
Nagios的安装部署和与cacti的整合(linuxtone)
 
自动生成 Makefile 的全过程详解!
自动生成 Makefile 的全过程详解!自动生成 Makefile 的全过程详解!
自动生成 Makefile 的全过程详解!
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
 
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
 

More from Shengyou Fan

[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式Shengyou Fan
 
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...Shengyou Fan
 
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀Shengyou Fan
 
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能Shengyou Fan
 
How I make a podcast website using serverless technology in 2023
How I make a podcast website using serverless technology in 2023How I make a podcast website using serverless technology in 2023
How I make a podcast website using serverless technology in 2023Shengyou Fan
 
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀Shengyou Fan
 
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台Shengyou Fan
 
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇Shengyou Fan
 
Using the Exposed SQL Framework to Manage Your Database
Using the Exposed SQL Framework to Manage Your DatabaseUsing the Exposed SQL Framework to Manage Your Database
Using the Exposed SQL Framework to Manage Your DatabaseShengyou Fan
 
[COSCUP 2022] Kotlin Collection 遊樂園
[COSCUP 2022] Kotlin Collection 遊樂園[COSCUP 2022] Kotlin Collection 遊樂園
[COSCUP 2022] Kotlin Collection 遊樂園Shengyou Fan
 
初探 Kotlin Multiplatform
初探 Kotlin Multiplatform初探 Kotlin Multiplatform
初探 Kotlin MultiplatformShengyou Fan
 
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率Shengyou Fan
 
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用Shengyou Fan
 
Composer 經典食譜
Composer 經典食譜Composer 經典食譜
Composer 經典食譜Shengyou Fan
 
老派浪漫:用 Kotlin 寫 Command Line 工具
老派浪漫:用 Kotlin 寫 Command Line 工具老派浪漫:用 Kotlin 寫 Command Line 工具
老派浪漫:用 Kotlin 寫 Command Line 工具Shengyou Fan
 
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS AggregatorShengyou Fan
 
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON APIShengyou Fan
 
[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless
[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless
[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin ServerlessShengyou Fan
 
[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置
[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置
[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置Shengyou Fan
 
用 Kotlin 打造讀書會小幫手
用 Kotlin 打造讀書會小幫手用 Kotlin 打造讀書會小幫手
用 Kotlin 打造讀書會小幫手Shengyou Fan
 

More from Shengyou Fan (20)

[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
 
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
 
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀
 
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
 
How I make a podcast website using serverless technology in 2023
How I make a podcast website using serverless technology in 2023How I make a podcast website using serverless technology in 2023
How I make a podcast website using serverless technology in 2023
 
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀
 
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
 
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
 
Using the Exposed SQL Framework to Manage Your Database
Using the Exposed SQL Framework to Manage Your DatabaseUsing the Exposed SQL Framework to Manage Your Database
Using the Exposed SQL Framework to Manage Your Database
 
[COSCUP 2022] Kotlin Collection 遊樂園
[COSCUP 2022] Kotlin Collection 遊樂園[COSCUP 2022] Kotlin Collection 遊樂園
[COSCUP 2022] Kotlin Collection 遊樂園
 
初探 Kotlin Multiplatform
初探 Kotlin Multiplatform初探 Kotlin Multiplatform
初探 Kotlin Multiplatform
 
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
 
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
 
Composer 經典食譜
Composer 經典食譜Composer 經典食譜
Composer 經典食譜
 
老派浪漫:用 Kotlin 寫 Command Line 工具
老派浪漫:用 Kotlin 寫 Command Line 工具老派浪漫:用 Kotlin 寫 Command Line 工具
老派浪漫:用 Kotlin 寫 Command Line 工具
 
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator
 
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API
 
[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless
[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless
[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless
 
[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置
[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置
[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置
 
用 Kotlin 打造讀書會小幫手
用 Kotlin 打造讀書會小幫手用 Kotlin 打造讀書會小幫手
用 Kotlin 打造讀書會小幫手
 

啟動 Laravel 與環境設定