Я использовал PHP 5.2.0-8+etch16 / oci_connect для подключения к базе данных Oracle моей компании и отображения информации на нашем веб-сайте (доступном для внешних IP-адресов). С тех пор, как мы обновили нашу версию БД (до версии 11g 11.2.0.4.0), я больше не могу подключиться к базе данных.
Страница продолжает загружаться (oci_set_call_timeout
не работает), и ничего не отображается. Я знаю, что код работает и учетные данные в порядке, потому что я использую тот же код на другой странице (видимой только для внутренних IP-адресов), и у меня не было никаких проблем после обновления. Я использую следующий код:
$conn = oci_connect('user', 'password', 'server', 'charset');
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
echo "Error";
}
else{
echo "OK";
}
Запустив phpinfo, раздел oci возвращает:
oci8
OCI8 Support enabled
Version 1.4.5
Revision $Revision: 305257 $
Active Persistent Connections 0
Active Connections 0
Oracle Instant Client Version 11.1
Temporary Lob support enabled
Collections support enabled
Directive Local Value Master Value
oci8.connection_class no value no value
oci8.default_prefetch 100 100
oci8.events Off Off
oci8.max_persistent -1 -1
oci8.old_oci_close_semantics Off Off
oci8.persistent_timeout -1 -1
oci8.ping_interval 60 60
oci8.privileged_connect Off Off
oci8.statement_cache_size 20 20
На странице, доступной только для внутренних IP-адресов, версия oci
— 1.4.9, и она работает на Windows Server 2003 (я знаю, что она старая). Внешняя страница (та, которая не работает) имеет oci
версию 1.4.5 и работает в Linux jedi-ng 2.6.25. У меня нет доступа к серверу linux (только к папке, где хранится php/html), но я могу запускать некоторые вещи, используя shell_exec()
.
Это проблема версии (я больше не могу подключиться к Oracle 11g, используя старую версию php/oci) или это просто проблема с подключением, которую я могу решить, попробовав другой подход?
Не стесняйтесь задавать вопросы, если вам нужно.
Заранее спасибо.