最近查看了以前的測試機器,發現原先用的 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


changyy 發表在 痞客邦 PIXNET 留言(0) 人氣()