Здесь очень простая задача объяснить (по крайней мере, после борьбы с ней и упрощения ее почти до абсурда).
Я подключаюсь через драйвер OCI внутри файла под названием whatever.Test.php. Просто сделайте простой запрос и выйдите. Затем я вызываю файл из браузера, и данные, взятые из базы данных, отображаются правильно. Следующий шаг: я запускаю PHPUnit над одним и тем же файлом со следующим результатом:
PHP Warning: oci_connect(): ORA-12154: TNS:could not resolve the connect identifier specified in ...
Есть идеи?
Окончательное решение было немного очевидным, как только я придумал это. Как-то сервер мог понять, с каким сервером, с которым я пытался связаться, был, по-моему, через файл tnsnames.ora. Однако, поскольку выполнение сценария не вызывает все серверные процессы, эта информация оттуда уже недоступна. Поэтому мне нужно было предоставить все данные в параметре oci_connect() $ connection_string, используя формат [//]host_name[:port][/service_name][:server_type][/instance_name]
(проверить документацию). Раньше я предоставлял только часть host_name.
(Спасибо в любом случае за ваш ответ, пользователь *).
oci_connect()
; настроено ли ваше окружение (TNS_ADMIN
,ORACLE_SID
,ORACLE_HOME
) и совпадает ли оно со средой, когдаwhatever.Test.php
открывается через браузер?