Php 为什么geoip抛出异常?
为什么要使用此代码:Php 为什么geoip抛出异常?,php,laravel,geoip,Php,Laravel,Geoip,为什么要使用此代码: geoip_country_code_by_name('unknown'); 生成ErrorException,何时必须返回false?这是GeoIP包中的一个错误,在任何版本中都没有修复(在1.1.0模块版本中,错误已修复是否安装了GeoIP?ErrorException附带错误消息,指示错误是什么。是的,GeoIP已安装。错误消息:“GeoIP\u country\u code\u by\u by\u name():Host unknown not found”,但
geoip_country_code_by_name('unknown');
生成ErrorException,何时必须返回false?这是GeoIP包中的一个错误,在任何版本中都没有修复(在1.1.0模块版本中,错误已修复是否安装了GeoIP?ErrorException附带错误消息,指示错误是什么。是的,GeoIP已安装。错误消息:“GeoIP\u country\u code\u by\u by\u name():Host unknown not found”,但在文档()中,此函数在这种情况下应返回false。您尝试过真实的主机名吗?也许它知道
unknown
不是合法的。@Fnatte:Laraval说到点子上了。它定义了抛出ErrorException
的错误处理程序。PHP生成一个通知(找不到主机名的ip),Laravel对其进行了ErrorException
。确定什么?主干是否已修复?我没有尝试,但说得很清楚。如果您编辑关于Laravel在通知中创建异常的部分,它就完成了,我将删除我的答案:)(我一回来,就要出去了…)@Wrikken添加了Laravel部分。缺少什么吗?:)@Fnatte:,嗯,试试。。。catch..
-ing确实有效,否则,完美:)呃,(1)Laravel确实抛出了ErrorException
(2)可以捕获它。只有当没有捕获到它时,才会调用默认的异常处理程序,这只是一个通用的“有问题”消息,即debug'
在app/config/app.php中设置为false,或者将完整的异常+跟踪设置为true。因此,解决此问题的方法有以下几种:(1)使用@`来抑制错误;(2)使用error\u reporting()
来(暂时)忽略E\u NOTICE
错误。(3) 重新编译mod_geoip
,使其不会触发提示。(4) 在代码周围使用try{…}catch{…}
块。
if (geoip_db_avail(GEOIP_COUNTRY_EDITION))
{
@geoip_country_code_by_name('unknown');
}
else
{
// Throw exception or handle the error
throw new Exception(
"Required database not available at " .
geoip_db_filename(GEOIP_COUNTRY_EDITION)
);
}