Разрешение Oracle TNS отклонено *

Я использую:

  • ЦенОС 6.7
  • Zend.1.2.15 с использованием oci8, с использованием InstantClient 11.2 x64
  • PHP 5.4.45

Попытка подключиться к Oracle:

  • База данных Oracle 10g, выпуск 10.2.0.4.0

Уже проверены учетные данные, уже пытались подключиться к другому серверу Oracle, но ошибка все та же:

12546 ORA-12546: TNS:permission denied *

Уже дал 0777 разрешение на /usr/local/oracle/11.2/client64/ после некоторых ответов, но ни один из них не решил.

Сервер не имеет IP в каком-либо черном списке.

Тот же код работает на любом другом ПК с Windows с OracleInstantClient, и на сервере не требуется дополнительная настройка для предоставления IP-разрешений на доступ или вообще каких-либо разрешений.

Есть ли что-то еще, что я могу проверить, чтобы решить эту проблему?


person Fabiano    schedule 15.09.2015    source источник
comment
Вы уверены, что используете мгновенный клиент? У вас нет полного клиента, установленного на той машине, которую он видит первым?   -  person Alex Poole    schedule 15.09.2015
comment
@AlexPoole из oracle.com/technetwork/topics/linuxx86-64soft-092277 .html, установлены следующие файлы: oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm и oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm. .   -  person Fabiano    schedule 15.09.2015
comment
Да, я понимаю, что вы установили мгновенный клиент; а у вас уже был полный клиент, возможно? Можете ли вы увидеть, какие бинарные файлы и библиотеки Oracle на самом деле использует PHP? Я спрашиваю, потому что знаю, что вы можете получить эту ошибку с полным клиентским (или серверным) программным обеспечением, когда разрешения неверны, но я не знаю, как получить ее с мгновенным клиентом. Просто дикая догадка.   -  person Alex Poole    schedule 15.09.2015
comment
Я не думаю, что у меня полноценный клиент, нет. Насколько я могу судить, PHP использует oci8 в качестве библиотеки. Есть ли какая-нибудь команда, которую я должен запустить, чтобы проверить, установлен ли полный клиент? Не специалист по UNIX.   -  person Fabiano    schedule 15.09.2015


Ответы (1)


После нескольких часов поиска я нашел эту статью: http://www.emsperformance.net/2013/12/20/connecting-to-oracle-database-from-php-with-oci8/, которая на сегодняшний день является лучшей статьей, объясняющей процесс установки ЛАМПА, Оракул, Зенд.

Настройка, которую мне не хватало:

setsebool -P httpd_can_network_connect on

Редактировать: через некоторое время этот ответ все еще кажется кому-то полезным, стоит сказать, что это происходит потому, что на машине активирован SELinux, обычно в режиме enforcing. Я бы не рекомендовал отключать SELinux, но установка его на permissive, похоже, облегчит процесс выявления некоторых проблем с ним. Вы можете проверить статус SELinux по sestatus.

Полный список логических значений в SELinux доступен по адресу: https://wiki.centos.org/TipsAndTricks/SelinuxBooleans< /а>

Общая информация: https://wiki.centos.org/HowTos/SELinux

person Fabiano    schedule 18.09.2015
comment
я использовал его, тогда это решило мою проблему, один совет от меня, если у вас есть laravel 7/centos 7/oci8, просто используйте setsebool httpd_can_network_connect на - person banzai; 18.03.2020