Проблема с blob полями, после переезда на новые версии PHP, Apache, Oracle, Solaris

Проблема с blob полями, после переезда на новые версии PHP, Apache, Oracle, Solaris

Как все стало
PHP 4.4.5
Apache 2.0.59
Oracle 9.2
Solaris 10

Суть проблемы:
Изменилась работа с blob полями.
Раньше содержимое таких полей вытаскивалось так
PHP:
$sql=OCIParse($conn,"select * from LIBRA_BOOKS_ADDON where NUMBER_ADDON=".$id_addon);

OCIExecute($sql,OCI_DEFAULT);
OCIFetch($sql);
$o=ociresult($sql,"BODY_ADDON");
$loc_field_name=$o->load();

header("Content-Type: ".ociresult($sql,"FILE_TYPE"));
header("Content-Disposition: attachment; filename=".ociresult($sql,"FILE_NAME"));
echo $loc_field_name;
Теперь же данный участок кода приводит к тому что скрипты ничего не возвращая падает в осадок

Итак теперь содержимое blob поля можно забрать так же как любое другое обычное поле, это грозит мне переписыванием некоторых частей php-кода, а их много. К тому же вопрос как получить FILE_TYPE, FILE_NAME для header для меня пока не понятен. Если кто-то ответит буду благодарен.

Возможно ли данную ситуацию исправить какими нубудь настройками?
Т.е. сделать чтобы привиденный php-код работал в новых условиях было бы идеально.
 
Автор оригинала: tony2001
апгрейд до PHP 5.2 поможет.
Грабли найдены самостоятельно. В новых условиях код не работал:

PHP:
   $conn = ociNLogon($ora_user,$ora_pass,$ora_sid);

   $sql = OCIParse($conn,"select * from cmplx_logo t where t.id_cmplx=".$_REQUEST['id_cmplx']);

   OCIExecute($sql, OCI_DEFAULT);
   OCIFetch($sql);
   $o = ociresult($sql,"LOGO");
   $loc_field_name = $o->load();

   header ("Content-Type: ".ociresult($sql,"FILE_TYPE"));
   Header('Content-Disposition: attachment; filename='.ociresult($sql,"LOGO"));
   print $loc_field_name;
дело в ociNLogon, если поставить ociLogon то все работает

PHP:
 $conn = ociLogon($ora_user,$ora_pass,$ora_sid);
Кстати никто не знает почему
PHP:
 ociresult($sql,"FILE_TYPE")
пустое?
 

tony2001

TeaM PHPClub
>дело в ociNLogon, если поставить ociLogon то все работает
чушь какая-то.
oci_new_connect (aka ocinlogon) просто всегда устанавливает новый коннекшен, а oci_connect (aka ocilogon) вернет уже открытый (с теми же паролем, логином и db).
соотв-но, на работу с блобами это никак не влияет.

>Кстати никто не знает почему
>ociresult($sql,"FILE_TYPE")
нет, никто не знает что такое "пустое" (пустая строка? NULL? false?) и почему оно не должно им быть.
 
Автор оригинала: tony2001
>дело в ociNLogon, если поставить ociLogon то все работает
чушь какая-то.
Согласен насчет чуши!
oci_new_connect (aka ocinlogon) просто всегда устанавливает новый коннекшен, а oci_connect (aka ocilogon) вернет уже открытый (с теми же паролем, логином и db).
соотв-но, на работу с блобами это никак не влияет.
Я тоже заглядывал в документацию смотрел разницу функций ociNLogon и ociLogon. В справке все как вы говорите.
Но дело обстоит именно так как я описал выше.

>Кстати никто не знает почему
>ociresult($sql,"FILE_TYPE")
нет, никто не знает что такое "пустое" (пустая строка? NULL? false?) и почему оно не должно им быть.
Да пустая строка. Я полагал что библиотека OCI определяет тип файла и данной функцией можно его вытащить.


P.S. Уважаемый tony2001 готов предоставить любые доказательства своих слов, а также любые данные настроек и т.д. Мои контакты email: VMatvienko(эт)gmail.com ICQ: 220-889-768
 
Сверху