Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Apache/PHP/Oracle вылетает на запросах 
:(
    Опции темы
Yag-Mort
Дата 8.12.2005, 14:57 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


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
Дата 8.12.2005, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: нет
Всего: 73



Цитата(Yag @ 8.12.2005, 14:57)
PutEnv("NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251");

Странная локаль smile

Вы не пытались собрать апач без пхп? Что-то сдается собака где-то тут порылась, но уверенности нет никакой.
Добавлено @ 21:30
В смысле, пхп скомпилить отдельно и потом подключить модулем.


--------------------
Теперь при чем :P
PM   Вверх
Yag-Mort
Дата 9.12.2005, 10:37 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Ignat @ 8.12.2005, 21:29)
Цитата(Yag @ 8.12.2005, 14:57)
PutEnv("NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251");

Странная локаль smile

Вы не пытались собрать апач без пхп? Что-то сдается собака где-то тут порылась, но уверенности нет никакой.
Добавлено @ 21:30
В смысле, пхп скомпилить отдельно и потом подключить модулем.

>> Странная локаль smile

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
Дата 9.12.2005, 12:55 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Проблема решилась. Хотя я до сих пор не понимаю, почему она решилась ТАК.

Решение:

Закомментировать переменную

safe_mode="OFF"

в файле

/usr/local/apache/conf/php.ini

Соответственно пришлось убрать все вызовы PutEnv() из исходников.

Пойду убьюсь веником.

  Вверх
Ignat
Дата 9.12.2005, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: нет
Всего: 73



Цитата(Yag @ 9.12.2005, 12:55)
Хотя я до сих пор не понимаю, почему она решилась ТАК.

Кстати, не очень хорошо, что она решилась именно так.

Вероятно, америку для вас не открою, но вдруг не знаете smile
Segmentation fault
Попытка обратиться по несуществующему адресу в памяти, возникает чаще всего (имхо) при ошибке в исходниках.
Этакий аналог виндового access violation.
В данном случае рассматриваю как некорректно прилинкованный php. Посему рекомендую попробовать собрать отдельно и подключить модулем (в конце концов, это занимает не так много времени, ведь файлы конфигов у вас уже есть). Сейчас большинство линуховых серверов именно в таком виде и имеет веб-сервер.


--------------------
Теперь при чем :P
PM   Вверх
Yag-Mort
Дата 9.12.2005, 16:19 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Ignat @ 9.12.2005, 14:14)
Цитата(Yag @ 9.12.2005, 12:55)
Хотя я до сих пор не понимаю, почему она решилась ТАК.

Кстати, не очень хорошо, что она решилась именно так.

Вероятно, америку для вас не открою, но вдруг не знаете smile
Segmentation fault
Попытка обратиться по несуществующему адресу в памяти, возникает чаще всего (имхо) при ошибке в исходниках.
Этакий аналог виндового access violation.
В данном случае рассматриваю как некорректно прилинкованный php. Посему рекомендую попробовать собрать отдельно и подключить модулем (в конце концов, это занимает не так много времени, ведь файлы конфигов у вас уже есть). Сейчас большинство линуховых серверов именно в таком виде и имеет веб-сервер.

Да-да. Я сделал именно так.
Пересобрал апача и 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
Дата 9.12.2005, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: нет
Всего: 73



Цитата(Yag @ 9.12.2005, 16:19)
при включенном safe_mode работает, при отключенном падает

Судя по описанию, с точностью до наоборот smile

Цитата(Yag @ 9.12.2005, 16:19)
дизайнеры попросили не трогать систему, им почему-то работать хочется...

Дествительно странно, печему же... smile

Цитата(Yag @ 9.12.2005, 16:19)
Есть большое подозрение, что SEGFAULT происходит из-за установки LD_LIBRARY_PATH,

В любом случае копать нужно в сторону ораклевской либы для пхп.


--------------------
Теперь при чем :P
PM   Вверх
Guest
Дата 9.12.2005, 17:36 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Ignat @ 9.12.2005, 16:37)
Цитата(Yag @ 9.12.2005, 16:19)
при включенном safe_mode работает, при отключенном падает

Судя по описанию, с точностью до наоборот smile

Нет, именно при включенном работает, при выключенном падает.

safe_mode="OFF"

падает

#safe_mode="OFF"

работает.
  Вверх
Ignat
Дата 9.12.2005, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: нет
Всего: 73



Цитата(Guest @ 9.12.2005, 17:36)
Нет, именно при включенном работает, при выключенном падает.

safe_mode="OFF"

падает

#safe_mode="OFF"

работает.


Мда.... Задачка. Теперь вообще не понимаю.



--------------------
Теперь при чем :P
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0786 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.