【问题标题】:PHP call_user_func_array doesn't catch database errorPHP call_user_func_array 没有捕获数据库错误
【发布时间】:2014-03-22 20:37:43
【问题描述】:

我目前正在构建一个数据库处理程序。在 Firebird 数据库之上运行 PHP 5.4.16。

当我做了一个准备好的语句时,我需要执行带有参数的 SQL。我做了这个功能:

private function assignParameters($args)
{
    return call_user_func_array('ibase_execute',$args);
}

问题是当我在 args 中出错(没有给它预期的值)时,我希望返回给出 false(错误)。 ibase_execute 通常在发生错误时返回 false。

但现在我的 PHP 安装 (XAMPP) 只是崩溃并重新启动。我试过使用 try/catch 没有任何运气。 call_user_func_array 不会失败,但我希望它会从 ibase_execute 返回结果。我很困惑。

我应该提到 PHP/Apache 错误日志中没有条目。唯一的条目是 Apache2 服务器已重新启动。

来自phpinfo()的interbase配置;

Firebird/InterBase Support  dynamic
Compile-time Client Library Version Firebird API version 25
Run-time Client Library Version WI-V6.3.2.26539 Firebird 2.5

任何想法 - 这是驱动程序崩溃吗?

编辑:

根据 Mariuz 的要求,这是我在崩溃时从调试中得到的。崩溃会从运行 PHP 代码的 http 进程创建两个转储报告。

它们都包含大量信息。这里有很多东西要转储,但这里有一些例外。

转储 1

Exception Information
In httpd__PID__10168__Date__02_21_2014__Time_03_40_11PM__949__Second_Chance_Exception_C0000008.dmp the assembly instruction at 0x76ed12c7 which does not correspond to any known native module in the process has caused an unknown exception (0xc0000008) on thread 0

转储 2

Exception Information
MSVCR80!UNWINDUPVEC+50In httpd__PID__10064__Date__02_21_2014__Time_03_40_05PM__321__Second_Chance_Exception_C0000005.dmp the assembly instruction at msvcr80!UnwindUpVec+50 in C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.6195_none_d09154e044272b9a\msvcr80.dll from Microsoft Corporation has caused an access violation exception (0xC0000005) when trying to read from memory location 0x00000000 on thread 5

【问题讨论】:

    标签: php database error-handling firebird


    【解决方案1】:

    这似乎是 php 中的段错误,请提供脚本及其回溯

    https://bugs.php.net/bugs-generating-backtrace-win32.php

    【讨论】:

    • 我正在运行 XAMPP,因此 php 进程不会为自己运行。如果有帮助,我可以从 Apache2 获得崩溃报告。
    猜你喜欢
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    相关资源
    最近更新 更多