Таким образом, после БОЛЬШОГО КОЛИЧЕСТВА $head-> стол () 'луг, я решил его.
Помните детей, опасаться мгновенной версии клиента, которую Вы используете, зависящий от настроек виртуализации!
Я устанавливал универсальный Мгновенный Клиент (не знающий, что наши серверы ESX находятся на процессорах AMD, не Intel), и это хорошо работало внутренне (установка CentOS была 32-разрядной, так как наши внутренние серверы ESXI не являются 64-разрядными). Хорошо о чудо, даже если у Вас есть 32-разрядная установка, работающая на виртуализированном сервере, который находится на AMD64, все еще имеет значение, какой мгновенный клиент Вы устанавливаете.
Это была последняя вещь я думавший проверить, но как это появляется, все хорошо работает теперь.
Я хотел бы благодарить всех, кто помог мне пробежать каждый возможный тест для понимания этого, но в конце, это был мой отказ для того, чтобы не осознавать различия в виртуализации.
ОБНОВЛЕНИЕ (5/21/2010), я думал эта ошибка, вышло из меня, когда я установил его на новом VM внутренне, но я теперь нашел сужающуюся ссылку.
Я пытался установить это на нашем рабочем сервере, когда я отправил это. После недели никакого прогресса и нуждающийся для возвращения к разработке я снабдил оборудованием VM на нашем внутреннем сервере с совершенно новой установкой Дерьма... CentOS и новые установки мгновенного клиента и oci8.
Работавший отлично.
Однако мы просто загрузили точную копию VM к нашим рабочим серверам, и он волшебно больше не работает. Испытанная переустановка всего, никакой пользы.
Так единственные вещи я мог сузить его к, проблема брандмауэра (хотя я получаю ту же проблему при попытке 127.0.0.1), или возможно ESX (наши рабочие серверы) проблема сервера, внутренние серверы выполняют ESXI.
Какие-либо мысли?
ОБНОВЛЕНИЕ (3/8/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
Трассировка останавливается в той точке.
Я установил все тот же путь на локальном сервере, и он хорошо работает. Для высказывания я в полной растерянности, поместил бы его слегка.
*ПРИМЕЧАНИЕ: Я работал, делают тест, и он возвратил СБОЙ на каждом тесте. Я никогда не выполнял это на своей рабочей машине, чтобы видеть, сообщает ли она о тех же ошибках. Какая-либо идея, почему делают тест отчетом, ПРИВЕЛА БЫ К СБОЮ, но сделала бы, не сообщает никакая ошибка?
Я установил 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) и все установленное без ошибок.
Я в полной растерянности.
CentOS: 5.4
Apache: 2.2.3
PHP: 5.3.1
InstantClient: 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:
Изменение хоста//хост
Возвраты:
Та же ошибка
Исправлено. Подробности см. Вверху, но вот примечания: среды виртуализации имеют значение.
вы подключаетесь к удаленной или локальной базе данных? я думаю, что для localhost вы должны заменить «host» на «false». Надеюсь, это поможет вам ...
edit: я думаю, вам не хватает параметра ... мои последние предложения: 1. вы должны установить порт (по умолчанию 1521) И / ИЛИ 2. Вы должны ввести имя базы данных И / ИЛИ необходимо установить имя экземпляра (параметр ORACLE_SID)
Есть что-нибудь в error_log Apache? Это mod_php, FastCGI или обычный CGI PHP? Что произойдет, если вы запустите сценарий через командную строку?
Вы также можете попробовать установить журнал ошибок PHP и заглянуть туда.
EDIT1 : Попробуйте:
echo "before";
if(!function_exists('oci_connect')) die('Oracle Not Installed');
И опубликуйте результаты ...
EDIT2: Я действительно не уверен. Лучше всего использовать эту информацию из руководства по PHP :
Самая распространенная проблема с установкой OCI8 - это неправильная настройка среды Oracle . Это обычно появляется как проблема при использовании oci_connect () или oci_pconnect (). Ошибка может быть ошибкой PHP, такой как вызов неопределенной функции oci_connect (), ошибкой Oracle, такой как ORA-12705, или даже Apache крушение. Проверьте файлы журнала Apache на наличие ошибок при запуске и просмотрите разделы выше, чтобы решить эту проблему.
У кого-нибудь еще есть идеи помочь Брайану?
Вы никогда не проверяете возвращаемое значение oci_connect () и не вызываете oci_error (), но это не имеет отношения к вашей проблеме, поскольку вы, кажется, страдаете от сбой PHP. В RHEL есть открытая ошибка, которая также может повлиять на вас:
http://pecl.php.net/bugs/bug.php?id=16626
Вы сами собрали пакет oci8? Вы используете сторонний двоичный файл?
Брайан,
Я буду честен: я пробовал это два года назад и потерпел неудачу. :) Я не мог заставить работать функции OCI ни на что, компилируя себя.
Но чтобы добиться этого, я искал альтернативное решение и нашел его в Zend Core для Oracle. Все, что я сделал, это загрузил, запустил установщик, и все готово. Он устанавливает для вас Apache / PHP, MySQL (необязательно) и InstantClient.
Теперь, как Zend Server, это в основном тот же продукт. Я понимаю, что это может быть не то решение, на которое вы надеялись, но если оно сработает ...