проблема подключения оракула с php (xampp)

Мне нужно подключить базу данных oracle 11g к моему серверу xampp, и мне нужно как локальное, так и удаленное соединение. Для этого я сначала установил экспресс-версию oracle 11g, загрузил instantclient-basic-nt-11.2.0.4.0 и поместил извлеченную папку instantclientconnected2 в C:\, затем я установил переменную среды (системные переменные), и мое значение пути выглядит так path=C:\oraclexe\app\oracle\product\11.2.0\server\bin;C:\instantclientconnected2.

Затем я удалил ; перед extension=php_oci8.dll и extension=php_oci8_11g.dll из файла php.ini. Затем сначала я попытался подключиться к своей локальной базе данных:

$tns_turjo = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.13)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))'; // tns of another pc
$tns_ishrak = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.18)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))'; // tns of my pc

$conn = oci_connect('system', 'cibl123*#', $tns_turjo);
if($conn) {
    echo "connected";
}
else {
    echo "not";
}

Когда я передаю $tns_ishrak, он повторяет connected, но когда я пытаюсь получить доступ к базе данных оракула другого компьютера, то есть использую $tns_turjo, он отображает not, и ошибка

Message: oci_connect(): ORA-12170: TNS:Connect timeout occurred

Я также изменил имя пользователя и пароль при подключении к другому компьютеру.

N.B. После включения расширений .dll из файла php.ini всякий раз, когда я запускаю Apache, я получаю всплывающее предупреждение в xampp, которое Module 'oci8' is already loaded

Как я могу решить проблему удаленного подключения?


person jishan    schedule 25.05.2015    source источник


Ответы (1)


Вам не нужно устанавливать InstantClient; Oracle XE включает полный клиент Oracle.

Существует множество возможных причин, по которым удаленное соединение не работает, но наиболее распространенными (по моему опыту) являются:

  1. Брандмауэр на вашем ПК блокирует соединение.
  2. Брандмауэр на удаленном ПК блокирует соединение.
  3. Прослушиватель TNS не запущен на удаленном ПК.
  4. Неверная строка подключения.

Можете ли вы подключиться к удаленному ПК без PHP? Вы пробовали использовать SQL * Plus или просто команду tnsping?


N.B. После включения расширений .dll из файла php.ini всякий раз, когда я запускаю Apache, я получаю всплывающее предупреждение в xampp, которое Module 'oci8' is already loaded

Это говорит само за себя: вы пытаетесь загрузить модуль OCI более одного раза. У вас должен быть включен только один модуль OCI, поэтому, если в вашем php.ini файле есть что-то вроде следующего, то проблема в этом:

extension=php_oci8.dll
extension=php_oci8_11g.dll

Только php_oci8_11g.dll должно быть включено, так как это версия, которую вы установили.

person timclutton    schedule 25.05.2015
comment
@jishan Есть отзывы? Вам это помогло? - person timclutton; 03.06.2015