Мне нужно соединить базу данных oracle 11g с моим сервером xampp, и мне нужно как локальное, так и удаленное соединение. Для этого я сначала установил экспресс-версию Oracle 11g и скачал instantclient-basic-nt-11.2.0.4.0
и поместил извлеченную папку instantclient_11_2
в C:\
Затем я устанавливаю переменную среды (системные переменные), и значение моего пути выглядит следующим образом path=C:\oraclexe\app\oracle\product\11.2.0\server\bin;C:\instantclient_11_2
,
Затем я удалил ;
до 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
Я также изменил имя пользователя и пароль при подключении к другому компьютеру.
Нотабене После включения расширений .dll из файла php.ini при каждом запуске Apache я получаю всплывающее предупреждение в xampp, которое Module 'oci8' is already loaded
Как я могу решить проблему удаленного подключения?
Вам не нужен установлен InstantClient; Oracle XE включает в себя полный клиент Oracle.
Существует много возможных причин, по которым удаленное соединение не работает, но наиболее распространенными (по моему опыту) являются:
Можно ли подключиться к удаленному ПК без PHP? Вы пробовали через SQL * Plus или просто tnsping
команда?
Нотабене После включения расширений .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
должен быть включен, так как это версия, которую вы установили.
Других решений пока нет …