2012年6月27日 星期三

lnmp 0.9 以後,安裝 pear 或 phpunit 會遇到的問題

這幾天換新硬碟,就想說連 VM 也一起重新安裝。
我要安裝 phpunit ,之前的安裝方法還算簡單,我是已經安裝 lnmp 一鍵安裝包,然後要先安裝 pear ,再安裝 phpunit,這些是官方的步驟:
  • sudo su -
  • cd 
  • cd src
  • wget http://pear.php.net/go-pear.phar
  • php -f go-pear.phar
  • export PATH=$PATH:/usr/local/php/bin
  • 加這行在 /usr/local/php/etc/php.ini 中   include_path = ".:/usr/local/php/share/pear"
  • pear config-set auto_discover 1
  • pear install pear.phpunit.de/PHPUnit
然後phpunit就安裝完成了。

但這次跟以前不一樣,原本的系統是 ubuntu 10.04 ,現在換成 12.04,php當然用改用最新的 stable 5.3.14 。而安裝總是卡在最後一步。

# pear install pear.phpunit.de/PHPUnit

Notice: Undefined variable: errstr in PEAR/Downloader.php on line 1616
PHP Notice:  Undefined variable: errstr in /usr/local/php/share/pear/PEAR/Downloader.php on line 1616

而且執行 pear 的很多東西都會有很多錯誤訊息。


我通常看到這種情況都會先把錯誤訊息 google ,但這次都找不到相關的。
網路上都說有錯誤要檢查 php.ini 的 path。但我檢查了很多次,都是正確的。
後來才知道,好像是 lnmp 0.9 版,在 php.ini 加上
disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,fsockopen

原本是空的
disable_functions = 

所以把 disable_functions 砍掉,就沒事了。

在這邊記一下這個雜項,如果有人也遇到的話。