目录
PHP错误: Exception thrown without a stack frame in Unknown on line 0[转载],thrownstack
我这开启session错在哪儿?
thinkphp在读取sqlite数据时为何会出现中文乱码?指点
首页 后端开发 php教程 PHP错误: Exception thrown without a stack frame in Unknown on line 0[转载],thrownstack_PHP教程

PHP错误: Exception thrown without a stack frame in Unknown on line 0[转载],thrownstack_PHP教程

Jul 13, 2016 am 10:22 AM
session

PHP错误: Exception thrown without a stack frame in Unknown on line 0[转载],thrownstack

来自:网易博客

就目前我的了解,在两种情况下,PHP会报 Exception thrown without a stack frame in Unknown on line 0这种错误:

1)异常捕捉用了set_exception_handler导向,Exception里面执行另一个Exception

如下面这段代码,就会出现这种问题:

http://de.php.net/manual/de/function.set-exception-handler.php#88082

<span>function</span> error_handler(<span>$code</span>, <span>$message</span>, <span>$file</span>, <span>$line</span><span>)
{
    </span><span>if</span> (0 == <span>error_reporting</span><span>())
        </span><span>return</span><span>;
        
    </span><span>throw</span> <span>new</span> ErrorException(<span>$message</span>, 0, <span>$code</span>, <span>$file</span>, <span>$line</span><span>);
}
</span><span>function</span> exception_handler(<span>$e</span><span>)
{
    </span><span>//</span><span> ... normal exception stuff goes here</span>
    <span>print</span> <span>$undefined</span>; <span>//</span><span> This is the underlying problem</span>
<span>}
</span><span>set_error_handler</span>("error_handler"<span>);
</span><span>set_exception_handler</span>("exception_handler"<span>);
</span><span>throw</span> <span>new</span> <span>Exception</span>("Just invoking the exception handler");
登录后复制

exception_handler函数内print $undefined;这行本身会抛出一个异常,而他又去调用set_exception_handler的exception_handler函数,死循环了。

解决办法:不要在一个Exception里面执行另一个Exception

上面的问题可以用try ... catch的方式,如exception_handler改成下面这样:

<span>function</span> exception_handler(<span>$e</span><span>)
{
    </span><span>try</span><span>
    {
        </span><span>//</span><span> ... normal exception stuff goes here</span>
        <span>print</span> <span>$undefined</span>; <span>//</span><span> This is the underlying problem</span>
<span>    }
    </span><span>catch</span> (<span>Exception</span> <span>$e</span><span>)
    {
        </span><span>print</span> <span>get_class</span>(<span>$e</span>)." thrown within the exception handler. Message: ".<span>$e</span>->getMessage()." on line ".<span>$e</span>-><span>getLine();
    }
}</span>
登录后复制

2) 在析构函数抛出异常

参考这个bug:http://bugs.php.net/bug.php?id=33598

下面的代码就会报这个错误:

<span>class</span><span> test {
    </span><span>function</span><span> __construct() {
        </span><span>echo</span> "Construct\n"<span>;
    }

    </span><span>function</span><span> greet() {
        </span><span>echo</span> "Hello World\n"<span>;
    } 

    </span><span>function</span><span> __destruct() {
        </span><span>echo</span> "Destruct\n"<span>;
        </span><span>throw</span> <span>new</span> <span>Exception</span>( 'test'<span> );
    }
}

</span><span>$test</span> = <span>new</span><span> test();
</span><span>$test</span>->greet();
登录后复制

目前的解决办法:

1.不要在析构函数中抛出异常.

2.由于析构函数是在退出时执行的,所以要手动unset这种类,并catch该异常。

比如上面的例子,在最后加一行unset($test),这时程序就会报throw new Exception( 'test' ); 这行有错误,再catch这个异常就行了。

上面两种情况在php 5.2.11版本上都会出现,至于原因我认为PHP可能就是这样处理的,php bug 33598 2005年就报上去了,bug Status为Closed,说明官方并不认为这是一个bug,或不当一个bug处理了。

我这开启session错在哪儿?

如果这个文件不是被另一个文件包含调用的话。。你可以试试下面的做法。

文件不要用 UTF-8 编码。。

把你下面的代码移到上面去。。反正你包含的 PHP 文件里面也没有 HTML 码。

检查你的 php.ini 注意 SESSION 临时文件保存的路径,是否可以被 PHP 访问。
 

thinkphp在读取sqlite数据时为何会出现中文乱码?指点

编码不同,有的是utf-8,有的是Unicode,所以会出现为乱码,插入数据库的时候设置成utf-8,读取出来也用utf-8就行了。
 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/850752.htmlTechArticlePHP错误: Exception thrown without a stack frame in Unknown on line 0[转载],thrownstack 来自:网易博客 就目前我的了解,在两种情况下,PHP会报 Exceptio...
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

SpringBoot Session怎么设置会话超时 SpringBoot Session怎么设置会话超时 May 15, 2023 pm 02:37 PM

问题发现springboot项目生产session-out超时问题,描述下问题:在测试环境通过改动application.yaml配置session-out,经过设置不同时间验证session-out配置生效,于是就直接设置了过期时间为8小时发布到了生产环境。然而中午接到客户反应项目过期时间设置较短,半小时不操作就会话过期需要反复登陆。解决处理开发环境:springboot项目内置Tomcat,所以项目中application.yaml配置session-out是生效的。生产环境:生产环境发布是

session失效怎么解决 session失效怎么解决 Oct 18, 2023 pm 05:19 PM

session失效通常是由于 session 的生存时间过期或者服务器关闭导致的。其解决办法:1、延长session的生存时间;2、使用持久化存储;3、使用cookie;4、异步更新session;5、使用会话管理中间件。

PHP Session 跨域问题的解决方法 PHP Session 跨域问题的解决方法 Oct 12, 2023 pm 03:00 PM

PHPSession跨域问题的解决方法在前后端分离的开发中,跨域请求已成为常态。在处理跨域问题时,我们通常会涉及到session的使用和管理。然而,由于浏览器的同源策略限制,跨域情况下默认情况下无法共享session。为了解决这个问题,我们需要采用一些技巧和方法来实现session的跨域共享。一、使用cookie跨域共享session最常

php session刷新后没有了怎么办 php session刷新后没有了怎么办 Jan 18, 2023 pm 01:39 PM

php session刷新后没有了的解决办法:1、通过“session_start();”开启session;2、把所有的公共配置写在一个php文件内;3、变量名不能和数组下标相同;4、在phpinfo里面查看session数据的存储路径,并查看该文件目录下的sessio是否保存成功即可。

session php默认失效时间是多少 session php默认失效时间是多少 Nov 01, 2022 am 09:14 AM

session php默认失效时间是1440秒,也就是24分钟,表示客户端超过24分钟没有刷新,当前session就会失效;如果用户关闭了浏览器,会话就会结束,Session就不存在了。

Springboot2 session设置超时时间无效怎么解决 Springboot2 session设置超时时间无效怎么解决 May 22, 2023 pm 01:49 PM

问题:今天项目中遇到了一个设置时间超时的问题,按SpringBoot2的application.properties更改一直不生效。解决方案:server.*属性用于控制SpringBoot使用的嵌入式容器。SpringBoot将使用ServletWebServerFactory实例之一创建servlet容器的实例。这些类使用server.*属性来配置受控的servlet容器(tomcat,jetty等)。当应用程序作为war文件部署到Tomcat实例时,server.*属性不适用。它们不适用,

Redis的共享session应用如何实现短信登录 Redis的共享session应用如何实现短信登录 Jun 03, 2023 pm 03:11 PM

1.基于session实现短信登录1.1短信登录流程图1.2实现发送短信验证码前端请求说明:说明请求方式POST请求路径/user/code请求参数phone(电话号码)返回值无后端接口实现:@Slf4j@ServicepublicclassUserServiceImplextendsServiceImplimplementsIUserService{@OverridepublicResultsendCode(Stringphone,HttpSessionsession){//1.校验手机号if

JavaScript和PHP的cookie之间有哪些区别? JavaScript和PHP的cookie之间有哪些区别? Sep 02, 2023 pm 12:29 PM

JavaScriptCookie使用JavaScriptcookie是记住和跟踪偏好、购买、佣金和其他信息的最有效方法。更好的访问者体验或网站统计所需的信息。PHPCookieCookie是存储在客户端计算机上的文本文件并保留它们用于跟踪目的。PHP透明地支持HTTPcookie。JavaScriptcookie如何工作?您的服务器将一些数据发送到访问者的浏览器cookie的形式。浏览器可以接受cookie。如果存在,它将作为纯文本记录存储在访问者的硬盘上。现在,当访问者到达站点上的另一个页面时

See all articles