Я настроил базу данных Oracle 18c и пытаюсь подключиться к ней из php-файла, но когда я запускаю простой тест подключения, я получаю сообщение об ошибке сервера, когда он не может подключиться. Я запустил print_r(getLoaded_extensions());
, и из выходного массива видно, что в настоящее время я не использую расширение oci8, как хотел. Мой тестовый файл подключения содержит следующее
#!/usr/local/bin/php
<?php
putenv("ORACLE_HOME=/usr/lib/oracle/18.3/client64")
$db = "(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ***.***.*.**)(PORT = 1521)))(CONNECT_DATA=(SID=orcl)))" ;
if ($c = OCILogon("username", "password", $db))
{
echo "Successfully connected to Oracle.\n";
OCILogoff($c);
}
else
{
$err = OCIError();
echo "Connection failed." . $err[text];
}
Я не уверен, правильно ли я установил свой putenv() в правильное расположение файла oci.dll или мне нужно установить расширение в первую очередь. Спасибо
🤔 А знаете ли вы, что...
PHP позволяет встраивать код в HTML-страницы с использованием специальных тегов <?php ?>.
Скорее всего, установка 18c по умолчанию создает Container DB (CDB) с именем ORCL и PDB1 (подключаемая DB). Запустите lsnrctl stat для поиска созданных служб. затем при подключении к БД используйте для подключения имя_службы вместо SID. Значение service_name можно увидеть в выводе lsnrctl stat.
Пример.
$db = "(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = patronus.domain.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdb1.domain.com)
)
)" ;