Call to undefined method DebugBar\\DebugBar::info()
使用 Laravel 的调试工具 laravel-debugbar 的 Facade 方式 Debugbar::info(), Debugbar::error()等方法打印日志消息,页面打不开,查看 PHP 错误日志报错:Call to undefined method DebugBar\\DebugBar::info().
请确保按照https://github.com/barryvdh/laravel-debugbar上的文档安装的,别忘了执行 composer dump-autoload.
如果你找不到原因,可能是命名空间引用错了,改成
use Barryvdh\Debugbar\Facade as Debugbar;
再用 Facade 的方式调用:
Debugbar::info('test debug info');
这个时候发现可以了,如图:
不过这样使用有点不方便了,这个组件的 Facade 的定义方式有点奇怪,不应该这样去定义,先就这样用吧,或者自己定义一个全局函数,直接通过 app(‘debugbar’) 这种方式去调用。吧。
gzuncompress函数不是php自带的系统函数而是一个插件函数了所以要使用 gzuncompress函数我们必须安装一个插件,下面来看看PHP函数gzuncompress无法使用的问题解决办法吧。解决过程
1.gzuncompress函数需要zlib支持才可以正常使用
2.可以使用探针检查当前php版本中是否已经开启了该函数
3.解决方式,额外编译php,安装zlib组件
解决步骤
1.开发环境为centos6.5 bit php5.3
2.参考代码(不可以直接拿去用,请思考下在执行以下代码)
[root@leafrainy zlib]# pwd
/root/dl/php/ext/zlib
[root@leafrainy zlib]#mv config0.m4 config.m4
[root@leafrainy zlib]#/usr/local/php/bin/phpize
[root@leafrainy zlib]#./configure --with-php-config=/usr/local/php/bin/php-config
[root@leafrainy zlib]#make
[root@leafrainy zlib]# cp modules/zlib.so /usr/local/php/lib/php/extension/
[root@leafrainy zlib]#vi /usr/local/php/lib/php.ini
添加extension=zlib.so
重启apache
Undefined variable错误是什么问题呢,小编觉得这个是程序错误了,那么碰到Undefined variable要如何解决呢,我们一起来看看具体的解决办法吧。我们知道在 php 中,变量通常是不需要定义直接使用的,但有的时候因为 php 环境的问题会出现各种各样奇奇怪怪的事情,今天在调试程序的时候直接提示 Notice: Undefined variable 的错误,这是因为有的变量没有定义造成的,也是晕了,好吧,这种问题直接一句屏蔽误句就搞定了。
直接在程序的最顶端插入一句 error_reporting(0); 相信就不会再暴露这样的问题了,也不耽误程序的运行,当然这个只是应急的方法,我们还是要好好检查程序哪里出现的问题,然后对症下药,对于直接屏蔽问题夏日博客再总结几种方法吧。
php.ini 配置文件中的修改
在php.ini中的302行 error_reporting = E_ALL
修改成
error_reporting = E_ALL & ~E_NOTICE 再重启apache2.2就行了
解决方法:修改php.ini
将: error_reporting = E_ALL
修改为:error_reporting = E_ALL & ~E_NOTICE
如果什么错误都不想让显示,直接修改:
display_errors = Off
如果你没有php.ini的修改权限,可在php头部加入:
ini_set("error_reporting","E_ALL & ~E_NOTICE");
php文件中的修改
如果你没有php.ini的修改权限,可在php头部加入 ini_set("error_reporting","E_ALL & ~E_NOTICE"); 或者 error_reporting(0);// 即可。
一般情况下直接建议在 php 文件中进行添加,这种方法简单,不用去修改服务端的 php.ini 了。
foreach循环在php使用时我们需要注意一些事项了,那么到底是需要注意哪些事项呢,下面我们来看一篇关于php foreach循环使用引用注意事项文章,具体如下。看过PHP相关书籍的都会了解到PHP有个这样的特性:写时复制。所以在用foreach时,需要对数据做修改的时候,都会复制数据,如果数据很大,那么就会带来一定的内存消耗,所以为了避免这种复制操作,就用到了引用,下面就介绍下引用的坑
问题案例
<?php
$arr = array(4, 5, 6);
var_dump($arr);
foreach ($arr as &$v) {
//do something here
}
foreach ($arr as $v) {
//do something here
}
var_dump($arr);
?>
输出为:
array(3) {
[0]=>
int(4)
[1]=>
int(5)
[2]=>
int(6)
}
array(3) {
[0]=>
int(4)
[1]=>
int(5)
[2]=>
&int(5)
}
问题分析
foreach 中不使用引用就没事, 用 foreach $k => $v 然后 $ar[$k] 来改变原始数组, 略微损失点效率。
执行第一个使用引用的 foreach 时:
一开始, $v 指向 $arr[0] 的存储空间,空间内存储着 4 , foreach 结束时, $v 指向 $arr[2] 的存储空间,空间内存储着 6 。
开始执行第二个 foreach 时:
注意和第一个 foreach 不同, 第二个 foreach 没有使用引用,那么就是赋值方式, 即将 $arr 的值依次 赋值 给 $v 。 进行到第一个元素时,要将 $ar[0] 赋值给 $v 。 问题就在这里,由于刚刚执行完第一个 foreach, $v 不是一个新变量,而是已经存在的、指向 $arr[2] 的那个 引用 , 如此一来,对 $v 进行赋值的时候,就将 $arr[0] = 4 写入了 $arr[2] 的实际存储空间, 相当于对 $arr[2] 进行赋值。 依此类推,第二个 foreach 执行的结果, 就是数组的最后一个元素变成了倒数第二个元素的值。
PHP 的开发者也认为,这种情况属于语言特性造成的,不是 bug。要修复这个问题,一种方法是对 foreach 进行特殊处理, 另一种就是限制 foreach 中 $v 的作用域, 这两种方式都与目前 PHP 的语言特性不符,开发人员不愿改, 但还是在 官方文档 中用 Warning 进行了说明。
解决方案
简单的方法,就是在使用了引用的 foreach 之后, unset 掉 $v
修改后的案例:
<?php
$arr = array(4, 5, 6);
var_dump($arr);
foreach ($arr as &$v) {
//do something here
}
unset($v);
foreach ($arr as $v) {
//do something here
}
var_dump($arr);
?>
输出:
array(3) {
[0]=>
int(4)
[1]=>
int(5)
[2]=>
int(6)
}
array(3) {
[0]=>
int(4)
[1]=>
int(5)
[2]=>
int(6)
}
补充:
foreach虽然简单,不过它可能会出现一些意外的行为,特别是代码涉及引用的情况下。
下面列举了几种case,有助于我们进一步认清foreach的本质
$arr = array(1,2,3);
foreach($arr as $k => &$v) {
$v = $v * 2;
}
// now $arr is array(2, 4, 6)
foreach($arr as $k => $v) {
echo "$k", " => ", "$v";
}
先从简单的开始,如果我们尝试运行上述代码,就会发现最后输出为0=>2 1=>4 2=>4 。
为何不是0=>2 1=>4 2=>6 ?
其实,我们可以认为 foreach($arr as $k => $v) 结构隐含了如下操作,分别将数组当前的'键'和当前的'值'赋给变量$k和$v。具体展开形如:
foreach($arr as $k => $v){
//在用户代码执行之前隐含了2个赋值操作
$v = currentVal();
$k = currentKey();
//继续运行用户代码
……
}
根据上述理论,现在我们重新来分析下第一个foreach:
第1遍循环,由于$v是一个引用,因此$v = &$arr[0],$v=$v*2相当于$arr[0]*2,因此$arr变成2,2,3
第2遍循环,$v = &$arr[1],$arr变成2,4,3
第3遍循环,$v = &$arr[2],$arr变成2,4,6
随后代码进入了第二个foreach:
第1遍循环,隐含操作$v=$arr[0]被触发,由于此时$v仍然是$arr[2]的引用,即相当于$arr[2]=$arr[0],$arr变成2,4,2
第2遍循环,$v=$arr[1],即$arr[2]=$arr[1],$arr变成2,4,4
第3遍循环,$v=$arr[2],即$arr[2]=$arr[2],$arr变成2,4,4
OK,分析完毕。
如何解决类似问题呢?php手册上有一段提醒:
Warning : 数组最后一个元素的 $value 引用在 foreach 循环之后仍会保留。建议使用unset()来将其销毁。
$arr = array(1,2,3);
foreach($arr as $k => &$v) {
$v = $v * 2;
}
unset($v);
foreach($arr as $k => $v) {
echo "$k", " => ", "$v";
}
// 输出 0=>2 1=>4 2=>6
从这个问题中我们可以看出,引用很有可能会伴随副作用。如果不希望无意识的修改导致数组内容变更,最好及时unset掉这些引用。
unset只会删除变量。并不会清空变量值对应的内存空间:(这是与指针不同的地方
如下:
$a = "str";
$b = &$a;
unset($b);
echo $a;
依然输出 str
相关文章
解决springboot使用logback日志出现LOG_PATH_IS_UNDEFINED文件夹的问题
这篇文章主要介绍了解决springboot使用logback日志出现LOG_PATH_IS_UNDEFINED文件夹的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-28解决jquery插件:TypeError:$.browser is undefined报错的方法
首先先说一说$.browser browser就是用来获取浏览器基本信息的。 jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support 。 在更新的 2.0 版本中,将不再支持 IE 6/7/8。 以后,如果用户需...2015-11-24PHP “Notice: Undefined variable” 和 “Notice: Undefined index”报错
下面我们来看一篇关于PHP “Notice: Undefined variable” 和 “Notice: Undefined index”报错,希望这篇文章能够帮助到各位朋友,有兴趣的朋友可以进来看看吧。...2016-11-25JavaScript中的this,call,apply使用及区别详解
本文结合基本javascript的权威书籍中的内容,根据自己的理解,通过相关示例向大家展示了javascript中this,call,apply使用及区别,非常的细致全面,希望大家能够喜欢。...2016-02-01- call和apply的第一个实参是要调用函数的母对象,它是调用上下文,在函数体内通过this来获得对它的引用。...2013-10-03
PHP Notice: undefined index原因与解决办法
在php开发时可能会碰到如PHP Notice: undefined index这种错误提示,下面我来给大家介绍关于undefined index错误提示的解决办法。 如 $_GET['aa']; 就会出现PHP No...2016-11-25JS中call/apply、arguments、undefined/null方法详解
这篇文章主要介绍了JS中callapply、arguments、undefinednull方法详解的相关资料,需要的朋友可以参考下...2016-02-18Jquery attr("checked") 返回checked或undefined 获取选中失效
假设我们现在需要这样的场景:页面上有一个checkbox,我们期望通过Jquery来获得它是否选中,或者通过Jquery来让它被选中。 在JQ1.6之前的版本,我们会这样写我们的代码: 复制代码 代码如下: <input type='checkbox' id='cb'/>...2013-10-13php Fatal error: Call to undefined function imagecreatefromjpeg()
imagecreatefromjpeg函数是一个图像处理函数,但在使用中发现Fatal error: Call to undefined function imagecreatefromjpeg()错误了,下文小编整理了一些教程,大家一起来...2016-11-25php连接mysql提示Call to undefined function mysql_connect()
今天在windows中配置了php mysql环境,很高兴测试一段代码结果提示Call to undefined function mysql_connect()这证明数据库配置不成功哈。 代码如下 ...2016-11-25php提示Notice: Use of undefined constant错误
下面整理了在使用php时出现的Use of undefined constant错误的解决办法,因这关于提示Use of undefined constant错误是配置问题并不是程序错误,下面给大家整理一下解决...2016-11-25Call to undefined method DebugBar\\DebugBar::info()
我们看到英文Call to undefined method就知道是因为函数或方法没有定义了,这个对于插件就有可能是什么功能没有开启了,我们下面来看看Call to undefined method DebugBa...2016-11-25解决关于PHP“Undefined variable”变量未定义
php中变量可以不定义的但是我们如果不对错误进行一些处理在使用未定义的变量时会提示Undefined variable错误了,下面我给大家举几个实例。 PHP错误提示“Unde...2016-11-25php Call to undefined function mssql_connect()
现在想连接MSSQL2000,把MSSQL数据导入到MYSQL,发现链接不上MSSQL, 提示 Call to undefined function mssql_connect() 已做步骤: 1:php.ini extension = php_mssql.dll...2016-11-25XAMPP使用CURL提示“Call to undefined function curl_init”问题
根据本人经验如果在使用php函数或方法出现Call to undefined function curl_init”错误提醒时就是php.ini中配置文件没有配置好了,解决方法也非常的简单 XAMPP打开...2016-11-25php Undefined variable和 Undefined index
出现这种问题是变量未定义了,我们只要把加个验证如 $a =isset($_get['aa'])?$_get['aa']:'变量未定义'; 这样未定义变量也不会出现undefined variable和 undefined inde...2016-11-25- 这篇文章主要为大家详细介绍了javascript中的call、apply、bind方法,感兴趣的朋友可以参考一下...2016-03-09
Call to undefined method DebugBar\\DebugBar::info()
我们看到英文Call to undefined method就知道是因为函数或方法没有定义了,这个对于插件就有可能是什么功能没有开启了,我们下面来看看Call to undefined method DebugBa...2016-11-25Fatal error: Call to undefined function
Fatal error: Call to undefined function mssql_connect() 这种提示是证明php与mssql数据库连接不成功,并且mssql_connect()这个函数不能使用 现在我们来看看解决方法...2016-11-25php提示Fatal error: Call to undefined function openssl_x509_parse()
在安装一个网站时提示Fatal error: Call to undefined function openssl_x509_parse函数了,而函数openssl_x509_read是一个php内置的函数哦,这个函数像curl需要组件支持...2016-11-25