PDO_OCI: Не выбирается Clob при работе в связке nginx+php-fpm

При переносе проекта с apache+mod_php на nginx+php-fpm, столкнулся с довольно непонятной проблемой при работе с Ораклом через PDO. Дело в том что, как я писал раннее, чтобы выбрать значение *LOB поля из Оракла, нужно сделать определенные манипуляции, и получив при fetch’e php_stream, сами данные получить путем stream_get_contents. Так вот, один и тот-же код под apache возвращает валидный stream, и соответственно все хорошо работает, а под nginx + php-fpm - пустую строку. Где копать непонятно, гугл очень немного знает про связку оракл+pdo+php-fpm, не говоря уже об nginx. Может быть у кого-то есть идеи?

Код такой:

function getNewsContent($id) {
    $newsq = $this->DBO->prepare("select id,subject,news_body,create_date,owner_id from news where id=:id");
    $newsq->execute(array(":id" => $id));
    $data = $newsq->fetch(PDO::FETCH_OBJ);
    $data->NEWS_BODY = stream_get_contents($data->NEWS_BODY);
    return $data;
}

если последовать мануалу, и добавить туда bindParam() таким образом:

function getNewsContent($id) {
    $newsq = $this->DBO->prepare("select id,subject,news_body,create_date,owner_id from news where id=:id");
    $newsq->execute(array(":id" => $id));
    #$newsq->bindColumn(3, $lob, PDO::PARAM_LOB);
    $data = $newsq->fetch(PDO::FETCH_OBJ);
    $data->NEWS_BODY = stream_get_contents($lob);
    return $data;
}

то php-fpm вообще вылетает с дампом памяти в логе, и ошибкой OCI-21500, которая по сути является “внутренней ошибкой без описания”. Вобщем вилы, куда копать непонятно, но врагу не сдается наш гордый варяг ))
Если кто-то в курсе, или работал в такой связке - помогите пожалуйста )))

Published on Tue, 21 Apr 2009 04:54

PHP+Oracle Faq

http://download-west.oracle.com/otndocs/tech/ias/portal/files/RG/completewebsitephpfaq2.htm Полезнейший FAQ от ораклов, о том как их чудо-продукт всетаки заставить работать с похапе.

На заметку.

Published on Thu, 16 Apr 2009 17:23

Codeigniter+Oracle = жесть в драйвере

Вы все еще полагаете что в мануале CodeIgniter’а не врут о том что метод

$this->db->escape();
спасет вас от Sql Injection?

Учитывайте, что содержание этого метода в драйвере для Oracle такое:

function escape_str($str)
{
return $str;
}

Доверяй, но проверяй :))

Published on Fri, 12 Oct 2007 20:55