php 警告方法 不可用,升级PHP版本后警告信息的逐一解决

最近网站服务器的PHP版本被升级到PHP5.6,某日我无意中发现网站空间使用率大了很多,到后台检查发现erro_log一个文件居然占用了几百M。打开看内容,里面都是PHP的各种警告日志。粗略看了一下主要有几种警告提示类型,于是逐一解决。解决方法都来自网络:

一、PHP Deprecated: Assigning the return value of new by reference is deprecated in

这是因为5.3以后,不能使用”=&”符号,所以直接改为”=”就可以了。

二、PHP Strict Standards: Only variables should be assigned by reference in

解决方法同上,”=&”符号,改为”=”就可以了。

三、PHP Strict Standards: Only variables should be passed by reference in

5.3以上默认只能传递具体的变量,而不能传递函数返回值

如下代码:

$tag_sel=array_shift(explode('',$tag));

改为:

$tagArr=explode('',$tag);$tag_sel=array_shift($tagArr);

四、PHP Strict Standards: Redefining already defined constructor for class

__construct()应该写在前面

如下代码:

functionWP_Object_Cache(){return$this->__construct();}function__construct(){...}

改为:

function__construct(){...}functionWP_Object_Cache(){return$this->__construct();}

五、PHP Strict Standards: Declaration of Walker_Page::start_lvl() should be compatible with Walker::start_lvl($output) in

字面理解即:Walker_Page类的start_lvl()方法,与Walker类的start_lvl($output)方法必须参数一致。只要给参数个默认值,使得编译器认为参数可以为空,保持子类重写方法与父类方法的函数签名相同就可以了。

如下代码:

classWalker{functionstart_lvl($output){return$output;}}classWalker_PageextendsWalker{functionstart_lvl($output,$depth){$indent=str_repeat("\t",$depth);$output.="\n$indent

  • \n";return$output;}}

改为:

classWalker{functionstart_lvl($output){return$output;}}classWalker_PageextendsWalker{functionstart_lvl($output,$depth=NULL){$indent=str_repeat("\t",$depth);$output.="\n$indent

  • \n";return$output;}}

六、PHP Warning: ini_set() has been disabled for security reasons in

ini_set()函数被禁用了。看了一下源代码,是想设置include_path这个值,那就只好修改代码里所有引用函数(include、require等)的路径了,用dirname(__FILE__)灵活引用。

七、PHP Warning: Creating default object from empty value in

变量没有初始化就直接使用的,将这个变量先实例化一个空类。

if(!isset($themes[$current_theme])){delete_option('current_theme');$current_theme=get_current_theme();}$ct=newstdClass();//添加这行就可以了$ct->name=$current_theme;

八、PHP Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method emotions::add_css() should not be called statically in

把add_css()声明为静态方法即可。即:

staticfunctionadd_css(){};

九、PHP Deprecated: Function eregi_replace() is deprecated in

ereg过时了,用preg代替解决。注意正则表达式写法。

ereg() (使用 preg_match() 替代)

eregi() (使用 preg_match() 配合“i”修正符替代)

ereg_replace() (使用 preg_replace() 替代)

eregi_replace() (使用 preg_replace() 配合“i”修正符替代)

如果 ereg_replace、eregi_replace 的第一个参数不是正则表达式,可以用 str_replace、str_ireplace 直接来替换

十、从浏览器直接访问wordpress插件目录里不该直接访问的php文件,也会报错。

如何禁止直接从浏览器输入地址访问.php文件?在该目录里创建一个.htaccess文件禁止用户直接访问即可。.htaccess的内容如下:

order allow,deny

deny from all

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值