问题原因:网站刚更换了服务器,php以前用的isapi模式,现在用的php 5.3.6.0的Fast CGI模式。
网上查了下,在php5.3中,正则函数ereg_replace已经废弃,而dedecms还继续用,这里的这个错误原因就是函数ereg_replace在 PHP5.3 中已经不建议使用了。
下述是不建议使用的Function (POSIX), 与建议替换成的Function (PCRE) 列表, 详可见: PHP: Differences from POSIX regex
* POSIX → PCRE
* ereg_replace() → preg_replace()
* ereg() → preg_match()
* eregi_replace() → preg_replace()
* eregi() → preg_match()
* split() → preg_split()
* spliti() → preg_split()
* sql_regcase() → No equivalent
解决方法:
方法一:
把php版本换到v5.3下
方法二:
继续使用v5.3,修改php.ini文件
;extension=php_mbstring.dll
改为
extension=php_mbstring.dll
;mbstring.func_overload = 0
修改为:
mbstring.func_overload = 7
方法三:
修改dedeconfig.php
第二行内容
define('DEDEADMIN', ereg_replace("[/\\]{1,}", '/', dirname(__FILE__) ) );
为下面任意一个
①define('DEDEADMIN', str_replace("\\", '/', dirname(__FILE__) ) );
②define('DEDEADMIN',strtr(dirname(__FILE__),'\\/','//'));
③define('DEDEADMIN', preg_replace("/[\/\\\\]{1,}/", "/", dirname(__FILE__) ) );
建议使用方法三中的③ !
来源:oschina
链接:https://my.oschina.net/u/575659/blog/69783