За последние 24 часа нас посетили 22746 программистов и 1031 робот. Сейчас ищут 635 программистов ...

PHP + Oracle и имя TTY при подключении.

Тема в разделе "Oracle Database", создана пользователем pdenispp, 17 мар 2010.

  1. pdenispp

    pdenispp Активный пользователь

    С нами с:
    17 мар 2010
    Сообщения:
    2
    Симпатии:
    0
    День добрый всем.
    Есть проблема. ОС RedHat Enterprise Linux 5.4 с установленными oracle instant client 11.2, apache, php-5.3.2. Есть скрипт (назовем еге cli.php) с одной строчкой:

    $DB = &NewADOConnection("oci8://".__LGN.":".__PASS."@".__HOST."/".__SID."?charset=AL32UTF8");

    При выполнении из коммандной строки: root@localhost# php cli.php или через сервер apache (по http): http://localhost/cli.php подключене НЕ устанавливается.
    Причина следующая: на сервере БД стоит некая защита. Если смотреть в логи сервера apache, то видим следующее:

    [warn] mod_fcgid: stderr: ORA-20001 php-cgi@webacc ... (tns v1-v3),WEBACC,,WEBACC

    При выполнении скрипта из командной строки видим

    ORA-20001: Запрещен запуск модуля:php@webacc (tns v1-v3),ROOT,PTS/3,WEBACC

    Разница в ошибках видна в следующем: в случае http не передается имя TTY, т.к. за http-сервером не закреплено имя TTY. А в случае командной строки это PTS/3. Теперь вопрос. Как заставить oracle instant client или php передать что угодно в качестве имя TTY. Я согласен даже на изменение и пересбор самого php. Просто ткните меня мордой в строчку. Сам я в c++ не силен.
     
  2. pdenispp

    pdenispp Активный пользователь

    С нами с:
    17 мар 2010
    Сообщения:
    2
    Симпатии:
    0
    Спасибо всем, кто посмотрел это сообщение.

    Посмотрел исходники PHP и убедился, что нужно изменять код oracle instant client. После этого напряг админа БД и все разрешилось. :)