在 php5.3環境下運行oscommerce,常常會出現Deprecated: Function ereg() is deprecated in...和Deprecated: Function ereg_replace() is deprecated in...這些類型的報錯提示。
其原因在於:php5.3以上的版本不支持ereg()函數,而是使用preg_match()函數;不支持ereg_replace()函數,而使用preg_replace()函數。
解決方法一:退回去用php5.2
解決方法二:繼續用php5.3,但是修改devel/devel.modul的460行:if ($errno & (E_ALL ^ E_NOTICE)) {改為if ($errno &
(E_ALL&~E_NOTICE&~E_DEPRECATED)) }把 deprecated錯誤給忽略掉
解決方法三:將不支持的函數修改為支持的函數即可。
例如:
Deprecated: Function eregi() is deprecated in D:\www\oscommerce\catalog\includes\classes\language.php on line 87
那么,將87行的
if(eregi('^(' . $value . ')(;q=[0-9]\\.[0-9])?$', $this->browser_languages[$i])
改為:
if(preg_match('/^(' . $value . ')(;q=[0-9]\\.[0-9])?$/i', $this->browser_languages[$i])
再例如:
Deprecated: Function ereg_replace() is deprecated in C:\wamp\www\includes\functions\general.php on line 61
那么,將61行的
$string = ereg_replace(' +', ' ', trim($string));
改為:
$string = preg_replace('{ +}', ' ', trim($string));
如此類推,其它類似的錯誤也可以按照上面兩個函數的語法來做修改。