2010年8月1日 星期日

[PHP] 從 5.2.x 升到 5.3.x 的問題處理 @ FreeBSD

最近查看了以前的測試機器,發現原先用的 PHP 5.2.x 系列已經被更新成 5.3.x 系列,並且連執行個 php -v 會出現 Segmentation fault,上網隨意找到一些資訊,大概是 5.3.x 系列已經包括一些常用的 lib 進來,再次請教一下學弟,發現他已處理過這方面的問題,僅需在 php5-extension 去移除那些套件,另外則是 extensions.ini 須去除或註解一些套件,如此一來便可以處理完畢。雖然我修到 php -v 不會出現問題,但還是有些 lib 不能正常運行。甚至從編譯 php5-extension 仍會出錯,主要卡在 PCRE 的部分。


參考資料


php5-extensions-1.4 Upgrade Failure, php5-filter-5.3.2, php5-imap-5.3.2 and pcre issues: Stop in /usr/ports/security/php5-filter


最後解法


查看目前安裝的 PHP 相關套件


# pkg_info | grep php


使用 pkg_delete 把他們都移除掉

# pkg_info | grep php5 | awk '{system("pkg_delete " $1)}'
# pkgdb -Fu


移除備份舊 php5 資料


# mv /usr/local/etc/php /path/backup/php5/etc
# mv /usr/local/lib/php /path/backup/php5/lib
# mv /usr/local/include/php /path/backup/php5/include


編寫 /etc/make.conf


# for PHP 5.3.x
WITH_BUNDLED_PCRE="YES"


重新編譯 php5


# cd /usr/ports/lang/php5 && make deinstall clean && make rmconfig && make install


重新編譯 php5-extension


順便加上常用的套件
+CURL        CURL support
+GD          GD library support
+IMAP        IMAP support
+MBSTRING    multibyte string support
+MCRYPT      Encryption support
+OPENSSL     OpenSSL support
+PCNTL       pcntl support (CLI only)
+PSPELL      pspell support
+SOCKETS     sockets support


# cd /usr/ports/lang/php5-extensions && make deinstall clean && make rmconfig && make config && make install


沒有留言:

張貼留言