PHP unixODBC Apache Segfault - PullRequest
       8

PHP unixODBC Apache Segfault

2 голосов
/ 09 августа 2011

Я могу нормально запустить мой скрипт из командной строки: php test.php, и он подключается, возвращает мой простой запрос, а затем отключается от oracle. когда я бегу:

isql -v dsn uname pw

он подключается, и я могу также запросить. Проблема в том, что когда я запускаю скрипт из браузера, я получаю замечательную ошибку 500 и ошибку сегмента в качестве подарка в моих файлах журнала. Теперь 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

Apache:

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: unixODBC.x86_64 2.2.14-12.fc14 (от ням)

Я даже не могу запустить расширенную отладку или регистрацию на php, потому что apache / php просто завершает работу, как только я перехожу по URL-адресу в браузере.

В настоящее время я пытаюсь выяснить, могу ли я запустить:

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

чтобы посмотреть, смогу ли я пока обойти это. Я с удовольствием поделюсь чем-нибудь еще, если это будет необходимо.

1 Ответ

1 голос
/ 17 августа 2011

Я бы предположил, что это почти наверняка (учитывая, что вы работаете на 64-битной платформе) из-за того, что вы используете unixODBC для сборки с sizeof (SQLLEN) == 4, который был установлен по умолчанию для 2.2.x, и sizeof ( SQLLEN) == 8 - это то, с чем собирается 2.3.x.

...