Вопрос

ОБНОВЛЕНИЕ (21.05.2010) УСПЕХ!

Итак, после МНОГО $head->desk() я решил эту проблему.

Помните, дети, будьте осторожны с версией мгновенного клиента, которую вы используете, в зависимости от настроек виртуализации!

Я устанавливал универсальный Instant Client (не зная, что наши серверы ESX работают на процессорах AMD, а не Intel), и внутри он работал нормально (установка CentOS была 32-битной, поскольку наши внутренние серверы ESXi не являются 64-битными).И вот, даже если у вас есть 32-битная установка, работающая на виртуализированном сервере, установленном на AMD64, все равно имеет значение, какой мгновенный клиент вы устанавливаете.

Это было последнее, что я думал проверить, но, судя по всему, сейчас все работает нормально.

Я хотел бы поблагодарить всех, кто помог мне пройти все возможные тесты, чтобы понять это, но, в конце концов, это была моя вина, что я не осознал различий в виртуализации.


ОБНОВЛЕНИЕ (21.05.2010)Я думал, что эта ошибка ускользнула от меня, когда я установил ее на новую виртуальную машину внутри себя, но теперь я нашел сужающую ссылку.

Когда я опубликовал это, я пытался установить это на наш производственный сервер.После недели отсутствия прогресса и необходимости вернуться к разработке я оснастил виртуальную машину на нашем внутреннем сервере совершенно новой установкой Crap...CentOS и свежие установки мгновенного клиента и oci8.

Работал отлично.

Однако мы только что загрузили точную копию виртуальной машины на наши рабочие серверы, и она волшебным образом больше не работает.Пробовал переустанавливать все, безрезультатно.

Таким образом, единственное, что я мог бы сузить, это проблема с брандмауэром (хотя я получаю ту же проблему при попытке 127.0.0.1) или, возможно, проблема с сервером ESX (наши производственные серверы), внутренние серверы работают под управлением ESXi.

Есть предположения?

ОБНОВЛЕНИЕ (08.03.2010) Я установил Xdebug, и он отслеживает мой код.Это результат, который я получаю:

TRACE START [2010-03-08 17:53:05]
    0.2090     327864   -> {main}() /data/aims3/http/octest.php:0
    0.2091     327988     -> ini_set(string(14), string(1)) /data/aims3/http/octest.php:3
    0.2093     327920     -> error_reporting(long) /data/aims3/http/octest.php:4
    0.2094     328048     -> oci_connect(string(8), string(8), string(25)) /data/aims3/http/octest.php:6

На этом этапе трассировка останавливается.

Я установил все таким же образом на локальный сервер, и все работает нормально.Сказать, что я в полной растерянности, было бы слишком легкомысленно.


*ПРИМЕЧАНИЕ:Я запустил make test, и в каждом тесте он возвращал FAIL.Я никогда не запускал это на своей рабочей машине, чтобы проверить, сообщает ли она о тех же ошибках.Есть идеи, почему make test сообщает FAIL, но make не сообщает об ошибках?

Я установил Oracle Instantclient без каких-либо сообщений об ошибках вместе с пакетом OCI8 PECL и в растерянности.Всякий раз, когда я пытаюсь открыть соединение с помощью oci_connect, весь мой PHP-скрипт останавливается.

ПРИМЕР:

<?php
ini_set ("display_errors", "1");
error_reporting(E_ALL);
echo "before";
$conn = oci_connect("username", "password", "host");
echo "after";
?>

Возвращает полностью пустую страницу.Модуль загружается (видно в phpinfo) и все устанавливается без ошибок.

Я в полной растерянности.

ЦентОС:5.4

Апач:2.2.3

PHP:5.3.1

Мгновенныйклиент:11.2

oci8:1.4.1

Есть предположения?

ПРИМЕЧАНИЯ

Журнал ошибок Apache ничего не сообщает

Попытка отладки:

1:

<?php
ini_set ("display_errors", "1");
error_reporting(E_ALL);
echo "before";
if(!function_exists('oci_connect')) die('Oracle Not Installed');
echo "after";
?>

Возврат:

beforeafter

2:

Смена хоста на //хост

Возврат:

Та же ошибка

Это было полезно?

Решение 5

Это исправлено.Подробности смотрите вверху, а вот основные примечания:среды виртуализации имеют значение.

Другие советы

Есть ли что-нибудь в error_log Apache?Это mod_php, FastCGI или обычный CGI PHP?Что произойдет, если запустить скрипт через командную строку?

Вы также можете попробовать установить Журнал ошибок PHP и заглядываю туда.


РЕДАКТИРОВАТЬ1:Пытаться:

echo "before";
if(!function_exists('oci_connect')) die('Oracle Not Installed');

И отпишитесь о результатах...


РЕДАКТИРОВАТЬ2:Я правда не уверен.Лучше всего это информация из руководство по PHP:

Наиболее распространенной проблемой с установкой OCI8 является неправильная установка среды Oracle.Обычно это появляется в виде проблемы с использованием oci_connect () или oci_pconnect ().Тем error может быть ошибкой PHP, такой как Call в неопределенную функцию oci_connect(), ошибку Oracle, такую как ORA-12705, или даже сбой Apache.Проверьте Apache лог-файлы для ошибок запуска и см. Чтобы решить эту проблему в разделах выше, выполните следующие действия. проблема.

У кого-нибудь еще есть идеи, как помочь Брайану?

Брайан,

Я буду честен:Я попробовал это два года назад и потерпел неудачу.:) Я не смог заставить функции OCI работать ни для чего, компилируя сам.

Но чтобы довести дело до конца, я поискал альтернативное решение и нашел его в Zend Core для Oracle.Все, что я сделал, это скачал, запустил установщик, и все готово.Он устанавливает Apache/PHP, MySQL (необязательно) и InstantClient.

Что касается Zend Server, то это, по сути, тот же продукт.Я понимаю, что это может быть не то решение, на которое вы надеялись, но если оно сработает...

Zend-сервер

вы подключаетесь к удаленной или локальной базе данных?Я думаю, что для локального хоста вы должны заменить «хост» на «ложь».Я надеюсь, что это поможет вам...

редактировать:Я думаю, вам не хватает параметра... мои последние предложения:1.вы должны установить порт (по умолчанию 1521) И/ИЛИ 2.Вы должны ввести имя базы данных И/ИЛИ вы должны установить имя экземпляра (параметр ORACLE_SID)

Вы никогда не проверяете возвращаемое значение oci_connect() и не вызываете oci_error(), но это не похоже на вашу проблему, поскольку вы, похоже, страдаете от сбоя PHP.В RHEL есть открытая ошибка, которая может коснуться и вас:

http://pecl.php.net/bugs/bug.php?id=16626

Вы сами собирали пакет oci8?Вы используете сторонний двоичный файл?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top