[技術分享 ] 01 元月, 2008 19:26

這個需求看來是很奇怪, 不過為了不遺忘, 還是把他記錄下來, 以免以後又忘光光嘍!!

為什麼會有這個需求呢, 這是起因於本人有一個客戶的主機OS是Linux FedoraCore5, 在WGM專案裡需要使用到UploadProgress這個擴充套件, 而這個套件必須運作在 PHP 5.2up, 所以才會有這個需求嘍!!!

請參考: 使用PHP 5.2以上的UploadProgress來實現上傳進度條功能 (一)

首先, 本人曾試過, 直接從FedoraCore7的Source裡取出PHP5.2.4 RPM套件來安裝, 但是果然發生了相依性的問題, 而相依的套件實在太多, 沒那個勇氣全都反安裝再重裝, 其中還包含了 .so的套件, 所以放棄!!!

接下來去到官方網站 http://php.net 下傳安裝包, 目前最新的版本是PHP 5.2.5(2007/11/18), 但是在preg()的指令上似乎還存在著問題, 所以就改選用PHP 5.2.4的版本來使用, 閱讀了INSTALL的說明後, 安裝程序如下:

安裝apsx (依需求安裝), 請參考 http://www.apsx.com/
在之前的 在Unix Server上運行ASP的可能性....... 裡有提到, 直接安裝 httpd-devel套件即可

# yum install httpd-devel

再使用以下指令即可取得apsx安裝位址

#which apxs (範例為 /usr/sbin/apxs)

接下來安裝linxml & libxml2 (可使用 # rpm -qa |grep libxml 檢查)

# yum install libxml
# yum install libxml-devel
# yum install libxml2
# yum install libxml2-devel

ps. 其餘套件請自行從FC5的RPC光碟裡取出安裝嘍, 這裡不再多說了!!!

接下來下傳 PHP 5.2.4的套件包並解壓縮, 執行安裝程序(如果中途有缺套件, 請再自行安裝)
# ./configure --with-mysql --with-apxs=/usr/sbin/apxs

如果您有啟用Apache2, 請改成 --with-apxs2

完成後再依序執行以下指令
# make
# make install

最後, 重新起動一次 apache, 讓新的設定生效!!!

#  service httpd restart

好了, 再執行php_info(); 就看到您的PHP版本已經成功的更新了!!!

系統環境:
OS: Linux FedoraCore5
PHP: 5.1.6 --> 5.2.4

 

 

[技術分享 ] 01 元月, 2008 18:13

今天為了WGM的專案裡的檔案功能問題傷透了腦筋, 為什麼呢!?
因為在一般做法, 上傳只是單純在表單Post以後, 程式接收開始處理, 完成後再進行相關的檔案搬移及管理, 再存入關聯資料來連結住檔案(或是放入DB也行), 但是目前遇到了一個極大的問題, 其中為了讓表單更現代化也是其中之一, 最主要的問題發生在, 當有使用者上傳了50MB或100MB的檔案時, 怎麼辦呢?? 就算把MaxUpload開放, 如果不在區域網本地端上傳, 一個80M的檔案會傳到天荒地老, 並等待伺服器回應, 這時...AJAX就很重要了..!!!

接下來, 當然就會想到用進度條來做好了, 目前在xAjax或jQuery上, 都是輕而易舉的, 但是, 問題來了, 本人使用的AJAX技術是源自於andot兄的PHPRPC, 主要是為了主程式輕盈短小, 又可以完全自己Code我要的function, 但是在檔案傳輸上, 因為JS無法取得使用者端電腦資訊, 所以似乎變得不可行, 在訪問了許多資料及PHPRPC愛好者(QQ群: 4927045), 發現只有一位王總曾使用PHPRPC + Flash完全了此項作業, 慘!! 我最不想碰的就是AS, 所以....只能另找他法了!!!

首先找到的是在PHP 4.x時使用的UploadProgressMeter (Google Search), 但是找到的資料說明非常不完全, 而且可供下傳的都是使用PHP 4.x Patch的方式, 我所有的主機都已經使用了PHP 5.2以上了, 後來也提到要安裝HTML_AJAX :

If you want to use the code you need to:
Install HTML_AJAX (pear install HTML_AJAX-alpha)
Download PAFUPMU and install it somewhere accessible.
Add the code to your page using demo.php as an example.

這樣又變得非常之不方便, 所以...我就開始找尋其它資料, 居然被本人發現到, 在PHP 5.2.x後, 已經被納入標準擴充模組了, 這個消息真的是很大快人心, 所以當下開始尋找資料...好了...讓我們開始實現這個作法吧!!!

Step 1:
首先, 要先安裝pear(PHP Extension and Application Repository), 也就是PHP延伸及擴充程式庫, 安裝的方式非常容易, 本人採用Lynx瀏覽器方式來安裝
先安裝Lynx
# yum install lynx

接下來安裝Pear
# lynx -source http://pear.php.net/go-pear | php

安裝時會有數個詢問項, 如果您熟悉安裝資訊及路徑, 您可以依需求自行變更, 如果不清楚, 請全部直接按Enter跳過即可!! 安裝完成後即可開始使用 pear擴充指令來安裝相關的PECL安裝包!!!
相關文件可查詢官方網站 : http://pecl.php.net/index.php

接下來直接安裝由Pear封裝的UploadProgress的擴充套件!!!
PECL : UploadProgress Package (http://pecl.php.net/package/uploadprogress)

指令 Example:
# pear install 檔案包本機位址檔案包網路路徑

ps. 如果您是由5.1.6升級成5.2.4時, 請注意, 因為RPM的DB資料還是舊有的PHP 5.1.6的記錄,  即使使用了 rpmdb -rebuild 重建也無效, 所以還是會造成PHP版本不符而無法升級擴充套件, 可能是因為RPM包沒有移除就直接用編譯方式安裝所致, 本人實在不太敢強制移除RPM包資料, 所以我改用以下指令來強制安裝!!!

# pear install -f 檔案包本機位址檔案包網路路徑

經過測試, 運作正常, 且phpinfo(); 及程式顯示都正常, 即然正常, 那就不要去動他了, 等待高手教學吧..= =" 

ps. 請注意Document有註明

DescriptionPHP 5.2 is needed


如果您的PHP版本未達5.2(含)或以上時, 請您進行升級至5.2.x, 本人等下有空再補寫一篇由PHP 5.1.6升級至5.2.4的文件記錄下來, 以免遺忘, 為什麼呢...因為FC5預設就是PHP 5.1.6, 我是用FC7所以沒有問題, FC5的使用者就很需要的, 其它的PHP 4.x --> PHP 5.2.x資料就一堆了, 所以不需要再提供了..^^

請參考: PHP 5.1.6 升級至 PHP 5.2.4 實作手記

安裝完成後, 打開您伺服器上的php_info(); 來看, 您就會看到您的PHP已經支援了UploadProgress進度條的支援了, 至於如何使用進度條的範例, 將會在下一篇上說明, 請大家多多利用!!!

架設環境:
OS: Linux Fedora Core 7 i386
PHP: PHP 5.2.4