2011-08-09 10 views
2

スクリプトをphp test.phpから正常に実行できます:php test.phpこれで接続し、単純なクエリを返してから、Oracleとの接続を切断します。私が走るとき:PHP unixODBC Apache Segfault

isql -v dsn uname pw 

それはまた私も照会できます。問題は、ブラウザからスクリプトを実行したときに、素晴らしいログ500とsegfaultがログファイルに存在するということです。今、Apacheはデバッグ用にコンパイルされていません(これは厄介です)。私は、デバッグでApacheを再インストールする必要はありません。

私が使用しています: PHP:

PHP 5.3.6 (cli) (built: Mar 17 2011 20:56:13) 
Copyright (c) 1997-2011 The PHP Group 
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies 
    with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator 

アパッチ:

Server version: Apache/2.2.17 (Unix) 
Server built: Oct 27 2010 10:04:21 
Server's Module Magic Number: 20051115:25 
Server loaded: APR 1.4.5, APR-Util 1.3.12 
Compiled using: APR 1.3.9, APR-Util 1.3.9 
Architecture: 64-bit 

Oracleクライアント:

client64, both sdk and instant client 

Linuxカーネル:

2.6.35.13-91.fc14.x86_64 

のunixODBC:(YUMから) unixODBC.x86_64 2.2.14-12.fc14

私はブラウザでURLにアクセスしてくださいたらapacheの/ PHPがちょうど終了したので、私もPHP上で高度なデバッグまたはロギングを実行することはできません。

私は現在、私が実行できるかどうかを確認しようとしている:

<?php exec('php test.php'); ?> 

を私は、当分の間、この問題を回避することができるかどうかを確認します。私は必要があれば他のものを喜んで共有します。

答えて

1

あなたが使用しているunixODBCが、sizeof(SQLLEN)== 4(これは2.2.xのデフォルトである)でビルドされているため、ほぼ確実に64ビットプラットフォーム上にあると思います(SQLLEN)== 8これは2.3.xがビルドするものです。

+0

ok、私の行動の方向はunixODBCドライバを再コンパイルして再構築することでしょうか?私は単に "yum install"コマンドを使うことはできませんか? – lilott8

+1

それは私の提案です。 2.2.14は現在、ほぼ3歳です。 –

+0

私はこれを試みます。ありがとうございました。 – lilott8