2012-08-27

【系統】PHP : Upgrade To PHP 5.4.6 遇到的一些問題

最近把 PHP 從很舊的 5.2.13 Upgrade 到現在最新的 5.4.6
發現,要改好多地方,真累…

像是下面這幾個就還蠻常用到的。( PHP 5.3.0 後改的 )
  • ereg( )  >>  preg_match( )
  • ereg_replace( )  >>  preg_replace( )
  • eregi( )  >>  preg_match( )
  • eregi_replace( )  >>  preg_replace( )
  • split( )  >>  preg_split( )
  • spliti( )  >>  preg_split( )
PS. split 如果是簡單的,就用 explode 來替代就好了,而且效能會更好
大部份的都只要在最外面加上 "/" 就可以了, EX:  / xxxx /
split("[/ .]", $data);    >>>    preg_split('/[\/ :]/', $data);

split("[/\\.]", $data);    >>>    preg_split("/[\/\\\.]/", $data); 

split(" ", $data);    >>>    explode(" ", $data);
改好後,就不會出現 Deprecated 的提示訊息啦。


接著又發現另一個問題。
PHP的 Error Log 中會有錯誤訊息如下圖:
PHP Warning: Unknown: function '1' not found or invalid function name in Unknown on line 0
這個問題,網路上有人說跟 zlib 有關,只要把 zlib 關掉就可以了。
但我需要 zlib ,所以我就把 zlib.output_handler 設為 Off ,就沒這個問題了
修改 php.ini
zlib.output_compression = On
zlib.output_compression_level = 6
zlib.output_handler = Off


另外Error Log 中也會有一堆 PHP Strict Standards 的訊息,看了很討厭,
所以我把他關掉了,修改 php.ini
error_reporting = E_ALL & ~E_STRICT & ~E_NOTICE


Extension  的路徑也變了,變成
/home/php/lib/php/extensions/no-debug-non-zts-20100525/
所以 php.ini 也要去修正,然後在build php extension 時,也要記得目的地要改一下。

目前大概就發現這幾個特別需要注意吧。















0 comments:

張貼留言