發表文章

目前顯示的是 5月, 2011的文章

設定php錯誤訊息

圖片
以往,在寫ASP、ASP .net時,當程式有錯誤發生,網頁上就會看到http status 500的錯誤訊息。也曾利用IIS做設定,配合500-100.asp去攔錯誤已產生log,以利後續的問題追查。 可是,在使用 apache + php 時,總覺得很少看到http status 500的錯誤,一般看到的都是php所丟出來的錯誤訊息。記憶中,500的錯誤,好像都是在apache error log中才看過。 同事最近剛好需要得到程式的處理結果。需要利用http status當作後續判斷的依據。因此,當程式發生非預期的錯誤時,要能夠知道異常已經發生。 原本想採用 set_error_handler() 來處理。不過,忽然想到前陣子整理php.ini時的一個參數 - display_error。該參數會控制php是否會顯示錯誤訊息。不經聯想是否因為這個參數的作用,php為了能在網頁上產出錯誤訊息,因此讓網頁正常執行完,也因此得到http status 200?

PHP APC的設定與應用

最近在裝VM上面裝APC 3.1.9有遇到一些狀況,解決問題中又看到一些關於APC的簡報資料,就順便整理一下… 這次安裝遇到什麼問題呢?當我在我NB上的VM裝好APC 3.1.9後,執行任何PHP程式,都會出現下面錯誤 XD Fatal error: Unknown: apc_fcntl_unlock failed: in Unknown on line 0 找了一下資料,原來是因為BUG。詳細說明 - PECL :: Bug #22688 :: Unknown: apc_fcntl_unlock failed 。最下方有提供 patch ,不過需要自己改cource code。照者說明改source code,重新安裝後,問題就解決了! 其實,APC很好安裝。不過,重點不是安裝,而是必須思考整體,如何讓APC融入架構中,發揮最大的效用。因此找出幾篇覺得值得參考的簡報。 先說APC如何安裝?以我這次所用的VM,OS為FreeBSD,安裝步驟如下 cd /usr/ports/www/pecl-APC make install 順道一提,開啟下面兩個選項任一個,我上述的問題也不會發生 --enable-apc-sem --enable-apc-spinlocks 究竟要開啟哪些選項?下面會提到…

HTC Incredible S提供Android 2.3.3更新

HTC Incredible S 終於提供Android版本升級了,5/24開始提供。 官方網站 上面的描述如下… 我們將於5 月24 號開始提供HTC Incredible S 無線軟體更新,系統會陸續送出更新提示,當您收到系統提示只要點選立即下載即可經由3G/GPRS或無線網路的連線方式,完成您的手機系統更新。(更新後請從功能表>設定>關於手機>軟體資訊>軟體號碼會更新成2.12.708.4即表示更新成功) 主要更新功能如下: Android 2.3作業系統升級 注意: 請先備份您資料,然後再升級裝置。建議您可選擇在有免費的Wi-Fi環境下載更新(例如:住家及辦公室等)。如您目前使用3G網路,下載可能須支付電信業者額外費用,請先確認已申租無限上網費率後再使用。如有疑問請致電 HTC 客服專線 +852-3520-1234。 白天看到這消息,晚上就做更新。下載更新時,手機正好充電中。更新檔案下載完後,當時電力依舊不到30,更新程式不讓我執行更新。稍後,電量比較多之後,才得以更新… 整個更新過程,需要一段時間。更新完後,照上面所述(功能表>設定>關於手機>軟體資訊)去看版本的變化,結果如下 Android版本 2.3.3 HTC Sense版本 2.1 軟體號碼 2.12.921.4 這樣看來,我更新的軟體號碼比官方所說的還新嗎?

樹林青龍嶺、大棟山、千年大榕樹、鶯歌石

圖片
鋪滿油桐花的山徑 夏天已經來了…為了不久後的合歡山北峰、西峰行程,想找一條有點長度卻又不需要花太多時間的路線走一走。最後,選定的路線,是兩年前由 樹林經青龍嶺、大棟山、石灰坑山、千年榕樹到山佳車 的路線(那次走這路線,也是為了之後的 武陵四秀之池有山、品田山 作為練習)。只是,這次做了小小的調整。過了千年榕樹後,不往山佳方向下山(這段都是產業道路),改由經鶯歌石到鶯歌火車站。 這真是正確的決定。因為此時正是五月雪-油桐花的季節,山區的油桐花都已經盛開。樹林青龍嶺到大棟山間的山路,雖然有油桐花可欣賞。卻因為油桐樹不是長在山徑之上,因此無法看到滿地白雪。 由千年榕樹到鶯歌石這段山路上,剛好穿越多處正在盛開的油桐樹下。經過這些地方時,可見油桐花的白色花朵鋪在山徑之上。落花較多處,只見山路兩旁都是白的,真是令人有種山路為白雪所覆蓋的錯覺。為一美中不足的,大概就是當天風不大,油桐花僅是斷斷續續的落下,沒法見識到下雪的感覺…

如何升級CodeIgniter 2.0

php framework - CodeIgniter 2.0 已經出了一陣子了。後續幾個月內,很快的變更到2.0.2。因為他新增一些功能,非常符合開發上的管理。另外,對於安全性也有更多的著墨。於是,最近開始做升級的動作。將由原本所使用的1.7.3升級到2.0.2。 如何升級到CodeIgniter 2呢?官方網站有些資訊可以參考,內容主要分為兩類。一是版本功能變化?另一個則是如何升級!建議下面的網址內容一定要先看過,心有餘力… 建議還是花個幾小時看一下完整的說明文件,就可以充分瞭解CodeIginter 2.x 的好處~ 說真的,CodeIgniter的文件,真的是少見的簡潔又清楚~ (K 過不少文件,很少像CodeIgniter可以在一天內看完的) 版本變更記錄 Change Log(原文) 版本紀錄(正體中文) 升級注意事項 (下面僅列出 1.7x 到 2.x,其實還有每一小版本的升級說明) 從 1.7.3 升級到 2.0.0(正體中文) Upgrading from 1.7.2 to 2.0.0(原文) 如果,沒改過CodeIginter的核心程式,升級步驟就如同上面所述,如此的簡單…

apache log中,如何增加所需的資訊

最近在做流量統計處理方式時,遇到一個問題。因為我們採用分析web server(apache)access log方式,有些額外的資訊,apache可能無法產生,而是需要在程式運作時得到這些資訊(資料可能來自於資料庫、cookie等來源),並寫入access log內。 舉例來說,下面這apache log,最後有個『mytestdata』。其實是要餵給之後流量統計分析之用的資訊。先假設該資料來自於cookie,該cookie的名稱為『cookieid』 192.168.174.1 - - [06/May/2011:22:41:11 +0800] "GET /test3.php HTTP/1.1" 200 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1" mytestdata 查閱了相關資料後,作法約有下面兩種方式… 第一個方式,修改apache log格式。在httpd.conf中修改LogFormat,增加如下的設定即可 %{cookieid}C 另一個方式,利用 apache_note() 來處理(在 PHP CookBook 看到的),處理方式分為兩段 修改apache log格式。在httpd.conf中修改LogFormat,增加 %{record_data}n 在php使用 apache_note() ,將資料寫入apache log。php程式語法如下… <?php apache_note( 'record_data' ,$_COOKIE[ 'cookieid' ]); 採用此法,可以在程式運作時取得所需的資訊,不限於cookie。比第一個方式有彈性。如下例 <?php $myvar= 'my testdata' ; //假設資料來自於資料庫 apache_note( 'record_data' , $myvar); 附註: 在測試時,發現一個狀況。在程式中,如果我呼叫兩次apache_note(),access log中就會有兩筆紀錄 apache_note() 有更進階的應用,不妨