EZTABLE IDEAS 是 EZTABLE 成員揮灑熱情和大家分享專業及創意的網誌。 EZTABLE 讓消費者 24 小時都可以在網路訂位全台灣最優質的餐廳,同時提供餐廳經營者 e 化的訂位管理系統 (雲端、iPad、智慧型手機)

在osx-mountain-lion建立php, eclipse, xdebug開發環境

十二月 13 2012 Published by under Engineering


親愛的朋友們大家好,耶誕大餐訂好了嗎?如果還沒的話,動作要快,因為快搶訂一空啦 XD

因為大家的食記都寫得太好了,所以我只好來寫技術文了,今天要講的是如何在 OSX 上建立 php 的開發環境,本人之前都在Linux的VM上寫code,因為最近入手了 MBA 13″,也想享受一下native開發的樂趣 😛

雖然OSX本身已經裝好了php,但是身為一個cutting edge developer,一定要來裝裝最新的版本!我們就先從Homebrew開始吧!Homebrew是一個mac下的第三方套件管理系統,可以幫忙裝許多有用的東西。

執行

[code lang="bash"]
ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"
[/code]

就可以安裝homebrew了,如果他說沒有gcc compiler的話,就先安裝 Xcode 跟它的command-line tools吧,沒事還可以開個iOS simulator來玩一下。裝好 Homebrew後,讓我們先來看看有哪些php的package

[code lang="bash"]
brew search php
[/code]

應該可以看到josegonzalez大大包好的php5.3跟php5.4的package,讓我們先來了解有哪些安裝的option

[code lang="bash"]
brew tap josegonzalez/php
brew info php54
[/code]

選擇自己需要用到的package後,就可以開始安裝囉,如果有用到mysql, 記得要enable mysql support喔

[code lang="bash"]
brew install php54 –with-mysql
[/code]

安裝完成後,可以修改bash的path,讓他優先使用Homebrew的package
修改~/.bash_profile
加入這行 (請自行修改php的版本)

[code lang="bash"]
# homebrew
export PATH=/usr/local/bin:/usr/local/Cellar/php54/5.4.9/bin:$PATH
[/code]

重新打開shell後,

[code lang="bash"]
php -v
[/code]

應該就可以看到使用Homebrew安裝的版本了。接下來在看有哪些需要用到的extension也安裝一下。

[code lang="bash"]
brew search php
brew install php54-xdebug
[/code]

修改xdebug的設定

[code lang="bash"]
/usr/local/etc/php/5.4/conf.d/ext-xdebug.ini

加入
xdebug.remote_enable=true
xdebug.remote_log="/var/log/xdebug.log"
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
[/code]

這樣php安裝就搞定了,設定檔和執行檔分別在這幾個folder下找,稍後eclipse會用到,也可以先去設定時區、memory大小限制、session要存的folder、warning level之類的東西。

[code lang="bash"]
/usr/local/etc/php/
/usr/local/Cellar/php54/
[/code]

接下來抓eclipse,沒有php專用的就抓個java developer版吧!
安裝好eclipse後需要再安裝PDT這個for php的extension

先新增source

安裝

之後就可以設定php的executable

設定debugger

就設定完成了,剩下一些字型、tab to space、warning顯示之類的設定就看個人了,
由畫面右上角的按鈕換到php view,import自己的project就可以開始開發程式了。

如果要放到apache上跑,只需要編輯

[code lang="bash"]
/etc/apache2/httpd.conf
[/code]

加入

[code lang="bash"]
LoadModule php5_module /usr/local/Cellar/php54/5.4.9/libexec/apache2/libphp5.so
[/code]

就可以用

[code lang="bash"]
sudo apachectl start
[/code]

來開啟apache於port 80,有需要的話可以修改 DocumentRoot 到自己方便開發的地方

寫了這麼長一串,其實我是想分享安裝時碰到的地雷,浪費了我昨天整晚的睡眠時間 = =
按照剛剛的步驟裝完,debugger是不會work的,所有的breakpoint都不會停下來。

首先懷疑是php5.4的bug, 降級成5.3,還是一樣,失敗
接下來懷疑PDT的bug,也真的有人report到tracker, 從2.2一路試到3.1,依然失敗
接下來懷疑Eclipse,從3.8到4.2的各種build,一樣不行,冏
好吧!那改裝Zenddebugger,還是跑不起來……

等等!這解決問題的順序錯了啊!難道試module根本沒有load進來!?(這是隔天想到的,果然睡飽頭腦才會清楚)

先用debug mode跑跑看這個

[code lang="bash"]
$ext = get_loaded_extensions();
print_r($ext);
[/code]

什麼?根本沒有xdebug!?
有了線索事情就好辦了,StackOverflow大神解決所有的問題
解法在這裡

EZTABLE致力於O2O (Online-to-Offline)的服務開發,歡迎有興趣的朋友們與我們聯絡 🙂

York Tsai,
VP Engineering @ EZTABLE

Related Posts Plugin for WordPress, Blogger...

No responses yet

發表迴響