Function ereg() is deprecated及解决办法

原创作品,允许转载,转载时请务必以超链接形式标明文章  原始出处 、作者信息和本声明。否则将追究法律责任。 http://crazylinux.blog.51cto.com/259244/345765
因为是在Drupal中遇到的问题,所以就在Drupal中解决。原因很简单,就是Drupal 6.x不支持PHP 5.3,Drupal 7没有这个问题,解决办法也很多。最简单的莫过于降级到PHP 5.2.x,如果由于一些特别的原因必须使用PHP 5.3+的话,可以尝试下列办法。
打开Drupal安装目录下的 includes/common.inc文件,找到590行(如果没有修改过的话),显示的应该是
 
if ($errno & (E_ALL ^ E_NOTICE)) {

将这一行替换成
if ($errno & (E_ALL &  ~E_NOTICE & ~E_DEPRECATED)) {

这一句将禁止所有Deprecated错误信息。如果你安装了Developer Tools模块的话,那么还需要修改 devel/devel.module的460行,方法相同。
 
如果这个办法不好用的话,可以尝试修改php.ini。
打开php.ini,找到
error_reporting = E_ALL

改成
error_reporting = E_ALL & ~E_DEPRECATED

道理是一样的。

 
如果还不行,或者因为各种原因改不了以上两处的话,还有办法。
打开drupal\includes\file.inc文件,找到895行,如下。
elseif ($depth >= $min_depth && ereg($mask, $file)) {

注意,如果895行不是这句的话,就在附近找找,或者直接搜索这句,找到以后把这句改为
elseif ($depth >= $min_depth && mb_ereg($mask, $file)) {

这样怎么着应该都行了。

你可能感兴趣的:(function)