iT邦幫忙

DAY 21
1

逐步提昇PHP技術能力系列 第 21

逐步提昇PHP技術能力 - 開發工具 : 試用xinc (2)

到底今天可以不可以成功安裝呢?暫且拭目以待...
參考:
* 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也不會出錯了XD

好,系統問題解決,再回到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不認識他XD

由於在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,然後嘗試看看怎樣逐漸改善他的架構。


上一篇
逐步提昇PHP技術能力 - 開發工具 : 試用xinc (1)
下一篇
逐步提昇PHP技術能力 - 逐步改善軟體架構 - 一個「古典」php論壇
系列文
逐步提昇PHP技術能力30

1 則留言

0
fillano
iT邦超人 1 級 ‧ 2013-10-22 13:25:29

在我的Mac上重新編譯了php,然後拿掉--enable-zend-multibyte,xinc就會跑了XD...

我要留言

立即登入留言