![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Yag-Mort |
|
|||
|
Unregistered |
Добрый день.
Столкнулись с такой проблемой. Стоит на линуксе (CENTOS 3.0) связка Apache 1.3.34 + PHP 4.4.1, собрано статически - код PHP вкомпилирован в дерево исходников апача. PHP собран с поддержкой оракла - как oracle, так и OCI8. Суть проблемы. Апач падает на любых запросах, возвращающих текстовые данные. Падает на выполнении ociexecute(). Вплоть до того, что $stmt = ociparse($conn, "select 1 from DUAL"); ociexecute($stmt); проходит нормально, а $stmt = ociparse($conn, "select '1' from DUAL"); ociexecute($stmt); вызывает трап. В логе error_log при этом: [Thu Dec 8 14:42:41 2005] [notice] child pid 23758 exit signal Segmentation fault (11) Больше ни в одном логе никакой информации нет. От версий апача и PHP зависит слабо - с утра на сервере стоял апач 1.3.28 и PHP 4.3.8, с ними было то же самое. Оракл живет на удаленном сервере под Windows 2003, доступ к нему через tnsnames.ora. Было подозрение на NLS_LANG, но при попытке установить в апаче эту переменную PutEnv("NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251"); выводится ругань про неизвестную кодовую страницу. Подскажите, пожалуйста, в каком направлении рыть землю. |
|||
|
||||
| Ignat |
|
|||
![]() Флудератор ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4030 Регистрация: 19.4.2004 Где: غيليندزيك مدينة Репутация: нет Всего: 73 |
Странная локаль Вы не пытались собрать апач без пхп? Что-то сдается собака где-то тут порылась, но уверенности нет никакой. Добавлено @ 21:30 В смысле, пхп скомпилить отдельно и потом подключить модулем. -------------------- Теперь при чем :P |
|||
|
||||
| Yag-Mort |
|
||||
|
Unregistered |
>> Странная локаль PutEnv("ORACLE_HOME=/usr/oracle/OraHome1"); // PutEnv("NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251"); putenv("ORACLE_SID=beglad"); putenv("LD_LIBRARY_PATH=/usr/oracle/OraHome1/lib"); putenv("NLS_LANG=AMERICAN"); putenv("ORA_NLS33=/usr/oracle/OraHome1/nls/admin/data"); Вот с этим набором переменных окружения на локаль не ругается, но падает по-прежнему. А первоначальный вариант локали взят из настроек оракла. >> Вы не пытались собрать апач без пхп? У меня на этот счет предубеждение со времен Red Hat 7.1, под которым собранный в динамике PHP просто падал при первом вызове и уносил с собой апач. С тех пор я собираю связку Apache+PHP в статике под линуксом и в динамике под FreeBSD. Хотя, возможно, имеет смысл попробовать. Но что-то мне слабо верится, что это поможет... |
||||
|
|||||
| Yag-Mort |
|
|||
|
Unregistered |
Проблема решилась. Хотя я до сих пор не понимаю, почему она решилась ТАК.
Решение: Закомментировать переменную safe_mode="OFF" в файле /usr/local/apache/conf/php.ini Соответственно пришлось убрать все вызовы PutEnv() из исходников. Пойду убьюсь веником. |
|||
|
||||
| Ignat |
|
|||
![]() Флудератор ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4030 Регистрация: 19.4.2004 Где: غيليندزيك مدينة Репутация: нет Всего: 73 |
Кстати, не очень хорошо, что она решилась именно так. Вероятно, америку для вас не открою, но вдруг не знаете Segmentation fault Попытка обратиться по несуществующему адресу в памяти, возникает чаще всего (имхо) при ошибке в исходниках. Этакий аналог виндового access violation. В данном случае рассматриваю как некорректно прилинкованный php. Посему рекомендую попробовать собрать отдельно и подключить модулем (в конце концов, это занимает не так много времени, ведь файлы конфигов у вас уже есть). Сейчас большинство линуховых серверов именно в таком виде и имеет веб-сервер. -------------------- Теперь при чем :P |
|||
|
||||
| Yag-Mort |
|
||||
|
Unregistered |
Да-да. Я сделал именно так. Пересобрал апача и PHP в динамике, проверил - падает. Грязно выругался, подумал, запустил из командной строки php/bin/php /usr/local/apache/htdocs/connect.php Получил тот же segmentation fault и стал пробовать запускать с разными ключами. На ключе -n (не использовать файл php.ini) команда отработала без падения. Ну, а дальше дело техники - по одному комментировал параметры в php.ini и смотрел, что получается. Есть большое подозрение, что SEGFAULT происходит из-за установки LD_LIBRARY_PATH, но экспериментировать больше не стал - дизайнеры попросили не трогать систему, им почему-то работать хочется... А метод подключения PHP к апачу, как выяснилось, роли не играет. На той же машине поднят еще один апач с PHP в статической линковке. Проверил на нем - при включенном safe_mode работает, при отключенном падает. |
||||
|
|||||
| Ignat |
|
||||||
![]() Флудератор ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4030 Регистрация: 19.4.2004 Где: غيليندزيك مدينة Репутация: нет Всего: 73 |
Судя по описанию, с точностью до наоборот
Дествительно странно, печему же...
В любом случае копать нужно в сторону ораклевской либы для пхп. -------------------- Теперь при чем :P |
||||||
|
|||||||
| Guest |
|
||||
|
Unregistered |
Нет, именно при включенном работает, при выключенном падает. safe_mode="OFF" падает #safe_mode="OFF" работает. |
||||
|
|||||
| Ignat |
|
|||
![]() Флудератор ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4030 Регистрация: 19.4.2004 Где: غيليندزيك مدينة Репутация: нет Всего: 73 |
Мда.... Задачка. Теперь вообще не понимаю. -------------------- Теперь при чем :P |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |