到底今天可以不可以成功安裝呢?暫且拭目以待...
參考:
* https://code.google.com/p/xinc/
* https://code.google.com/p/xinc/wiki/DocumentationXinc2_2
為了確實抓出問題,先追蹤了一下pear的原始碼,發現在PEAR_Config中,如果程式無法判斷讓PEAR套件存放一些資料的目錄在哪裡('data_dir'),他就會丟回PEAR目錄底下的data目錄,不過這個目錄實際上不存在,所以根本無法寫入。
但是為什麼web抓不到,cli卻抓得到data_dir的位置?嘗試用php -a在不同目錄引入PEAR_Config類別:
Feng-Hsu-Pingteki-MacBook-Air:Library fillano$ php -a
Interactive shell
php > include 'PEAR/Config.php';
結果程式直接出錯離開。而且在某些目錄中會出錯,某些又不會,不過會出錯的目錄是固定的,所以看起來跟某種權限似乎有顛關係。即使把PEAR整個移除再重新安裝,結果也一樣。
嗯嗯,在安裝過程中,PEAR會修改php.ini的include_path設定,結果注意到了,這裡預設通常是:
include_path = ".:/usr/share/pear"
把順序換一下:
include_path = "/usr/share/pear:."
詭異的錯誤就沒問題,在任何位置引入PEAR/Config.php也不會出錯了
好,系統問題解決,再回到xinc...螢幕還是沒畫面
有一個問題是每個程式都發生,就是...他在所有程式開頭都加了:
declare(encoding = 'utf-8');
理論上這在PHP-5.3應該沒問題才對,但是就是會報錯(parse error):
Feng-Hsu-Pingteki-MacBook-Air:Xinc fillano$ xinc
PHP Parse error: parse error, expecting `','' or `')'' in /usr/bin/xinc on line 3
第三行就是這個declare:
#!/usr/bin/php
<?php
declare(encoding = 'utf-8');
然後我的PHP-5.3.26不認識他
由於在Xinc的程式中,每一支的開頭都加了這個宣告...我懶得改了,先放棄吧...殘念阿,我本來以為問題還在控制範圍...不過至少超過賽程範圍。
(如果想知道什麼是declare,可以參考手冊http://www.php.net/manual/en/control-structures.declare.php#control-structures.declare.encoding的說明...我用的PHP剛好在編譯時有加--enable-zend-multibyte參數,也許拿掉就沒問題了,有空再來試一下)
===========
結論:雖然很想找一個純PHP的持續整合方案,但是很不幸在我機器上跑不起來,這樣還不如去使用CruiseControl或是Jenkins。當然,要用Phing做土砲CI也是可行的,只是他沒辦法像這些方案可以驅動管理多個專案就是了。
之後的幾天,還是來腳踏實地吧。先來寫個最古典的PHP,然後嘗試看看怎樣逐漸改善他的架構。
在我的Mac上重新編譯了php,然後拿掉--enable-zend-multibyte,xinc就會跑了...