更新:应该按照建议在服务器故障上。新帖子在这里:https ://serverfault.com/questions/451220/psql-64bit-driver-error
我很难让 PHP 使用 Pervasive SQL 驱动程序与 ODBC 连接。
我有一个 Ubuntu Server 12.04 并从这里安装了 64 位 PSQL 客户端驱动程序: http ://www.pervasivedb.com/psqlv11/Pages/PSQL-v11-Linux-Downloads.aspx
我已经将带有 DSN 的 ODBC.ini 设置到我的数据库中,我可以愉快地连接然后运行查询:
isql Exchequer
当我使用 PHP 时,odbc_connect 看起来不错并给了我一个资源,但是 odbc_exec(调用驱动程序的点)然后完全失败(SEG 错误):
[Fri Aug 10 11:05:50 2012] [notice] child pid 13770 exit signal Segmentation fault (11)
我究竟做错了什么?
更新:
这是gdb的输出
(gdb) run /var/www/default/scripts/stock/index.php
Starting program: /usr/bin/php5 /var/www/default/scripts/stock/index.php
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffecc89700 (LWP 14514)]
[Thread 0x7fffecc89700 (LWP 14514) exited]
Halt[Inferior 1 (process 14513) exited normally]
(gdb) bt
No stack.
和 PHP error.log 条目
[Fri Aug 10 15:24:53 2012] [notice] child pid 14510 exit signal Segmentation fault (11)
我还添加了 Trace/TraceFile 但我似乎没有将任何输出保存到日志文件中。
更新 2:
这是我正在运行的简化脚本:
if(!$odbc = odbc_connect("exchequer","username","password")) { die("连接到 Exchequer 失败"); } $rows = odbc_exec($odbc,'SELECT sl.slStockCode, sl.slQtyInStock, sl.slQtyAllocated, sl.slLocCode FROM StockLocation sl WHERE sl.slLocCode IN (\'DIG\',\'WOO\',\'MEN \')'); 回声“
“.print_r($rows,true)。”";
odbc_connect 工作(不会死),但我在浏览器中一直看到错误 342,并且在 apache 日志文件中看到“退出信号分段错误”。