更新: 提案されているように、serverfault にする必要があります。新しい投稿はこちら: 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 ログ ファイルに「exit signal Segmentation fault」が表示されます。