You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PDO ODBC连接Sybase ASE15.7时fetchAll异常及Apache崩溃求助

PHP PDO-ODBC连接Sybase ASE 15.7后fetchAll返回异常及Apache崩溃问题

问题背景

将服务器上的Sybase客户端从15.0版本升级至15.7版本后,使用PHP的PDO对象通过ODBC连接Sybase ASE 15.7数据库时出现两类异常问题。

具体现象

  • 部分SELECT语句在自定义函数中调用fetchAll()后,函数内通过print_r()能正常打印查询结果,但通过return返回该结果时,外部接收变量无有效数据;
  • 若注释掉fetchAll()相关代码,直接给返回变量赋值字符串(如'TEST'),return能正常返回数据;
  • Apache服务出现崩溃,同时ODBC管理员(odbcad32.exe)也出现崩溃,事件日志记录APPCRASH错误,异常代码均为c0000005(内存访问违规)。

示例代码

function GetData($host,$user,$passwd) {
    $zaz = []; 
    try {    
        $options = [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
        ];
        $pdo = new PDO($host, $user, $passwd, $options);       
        $sqlTmp = 'SELECT * FROM xxx WHERE kzak=:kzak AND popzak=:popzak';
        $bindTmp = array(
            'kzak' => (int) 2327,
            'popzak' => 'letter'
        );
        $pdostmt = $pdo->prepare($sqlTmp);
        if ($pdostmt->execute($bindTmp) !== false) {
            //$zaz='TEST';
            $zaz = $pdostmt->fetchAll(PDO::FETCH_ASSOC);                               
            print_r($zaz); // 此处能正常输出数据
        }
    } catch (PDOException $e) {      
        echo 'error: ' . $e V这拓展的vism KitA politician 弗成穿MS,正文)echo 'error: ' . $e->getMessage();       
    } finally {
        return $zaz; // 返回结果无有效数据
    }
 }

 $data = GetData($HOSTC,$USERC,$PASSWDC);
 var_dump($data);

事件日志错误信息

Apache崩溃日志

ConsentKey=APPCRASH
AppName=Apache HTTP Server
ig[0].Name=Application Name
Sig[0].Value=httpd.exe
Sig[1].Name=Application Version
Sig[1].Value=2.4.55.0
Sig[2].Name=Application Timestamp
Sig[2].Value=63c44299
Sig[3].Name=Fault Module Name
Sig[3].Value=VCRUNTIME140.dll
Sig[4].Name=Fault Module Version
Sig[4].Value=14.0.24123.0
Sig[5].Name=Fault Module Timestamp
Sig[5].Value=574290ad
Sig[6].Name=Exception Code
Sig[6].Value=c0000005
Sig[7].Name=Exception Offset
Sig[7].Value=0000dd5b

ODBC管理员崩溃日志

ConsentKey=APPCRASH
AppName=ODBC Administrator
AppPath=C:\Windows\syswow64\odbcad32.exe
Sig[0].Name=Application Name
Sig[0].Value=odbcad32.exe
Sig[1].Name=Application Version
Sig[1].Value=10.0.20348.1
Sig[2].Name=Application Timestamp
Sig[2].Value=f4e4d789
Sig[3].Name=Fault Module Name
Sig[3].Value=MSVCR80.dll
Sig[4].Name=Fault Module Version
Sig[4].Value=8.0.50727.9680
Sig[5].Name=Fault Module Timestamp
Sig[5].Value=6090c909
Sig[6].Name=Exception Code
Sig[6].Value=c0000005
Sig[7].Name=Exception Offset
Sig[7].Value=00012339

当前环境

  • Apache版本:2.4.55
  • PHP版本:已尝试5.6.9、5.6.40、8.2.7
  • Sybase ASE版本:15.7,客户端从15.0升级至15.7

请问有没有人遇到过类似问题?是否知晓解决方案?感谢解答!

内容的提问来源于stack exchange,提问作者user22107564

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 07:17:07