Конфигурация PHP, PEAR и oci8

Я сделаю это быстро.

Я установил Oracle 11g (с соответствующей базой данных, пользователями и т. Д.), Apache 2.4.6 и PHP 5.5.4 в системе Fedora 19.

Я хотел подключить PHP к Oracle. Что я действительно хотел сделать, так это загрузить MDB2_Driver_oci8, что, по моему мнению, было бы легко, но прежде чем я смогу сделать это, PHP должен включить этот плагин, поэтому вот что я сделал:

  • Попытался установить oci8 через следующее: pecl install oci8
  • Когда в первые несколько раз это не сработало, я понял, что мне почему-то нужны "инструменты разработки" - через yum groupinstall "Development Tools"
  • Позже я понял, что PHP на самом деле не делает oci8 - это PHP Devel. Таким образом, я должен был установить это тоже через yum install php-devel,
  • И вот я наконец-то добрался до установки oci8. Он попросил каталог Oracle, и это было все. Но сказано следующее:
    Configuration option 'php_ini' is not set to php.ini location
    You should add 'extensions=oci8.so' to php.ini

Во-первых, я сделал locate oci8.so - нашел его в /usr/lib64/php/modules/
Во-вторых, я добавил то, что мне было сказано, в файл php.ini.
В-третьих, я проверил обычную тестовую страницу php_info() - никаких упоминаний об OCI8. Ой-ой.
В-четвертых, работает как php -я и php -m перечислил oci8 как один из модулей. Weird.
В отчаянии я пошел вперед и скачал MDB2_Driver_oci8. Может быть, это все исправит. Нету.

Когда я загрузил свою веб-страницу PHP, она вернула следующее:
Сообщение об ошибке: расширение oci8 не скомпилировано в PHP
А также: ошибка MDB2: не найдено

Странный. И тогда я решил проверить журналы ошибок:
Запуск PHP - не удается загрузить динамическую библиотеку '/usr/lib64/php/modules/oci8.so' - libclntsh.so.11.1: невозможно открыть файл общего объекта: такого файла или каталога в Unknown в строке 0 нет

И теперь я застрял. Я попытался зайти в php.ini и обнаружил, что extension_dir был закомментирован. Я положил его обратно, что, казалось, только сломало вещи.

Вещи примечания:

  • Я следовал этому (ссылка) руководство о том, как настроить PHP и установить oci8.
  • ./configure --with-oci8 не работает Fedora говорит, что нет такой директории.
  • Поскольку файлы веб-страницы и фактический сервер находятся на одном компьютере, я не установил файлы клиента Oracle.
  • Extension_dir закомментирован по умолчанию в php.ini.

Это только одна из моих проблем в длинной череде проблем, связанных с репликацией уже существующей и работающей, но умирающей установки. Кажется, всякий раз, когда я хочу решить проблему, я должен сначала сделать X. И, выполняя X, я обнаруживаю другую проблему, которую я должен решить, выполняя Y, которая имеет свои проблемы и т. Д. И т. Д.

Любая помощь приветствуется. Благодарю.

2 ответа

Решение

Прочитав много в Интернете, я нашел эту страницу, которая указывает, что я должен отключить SELinux и перезагрузиться.

Это добилось цели.

Я знаю, что этот вопрос немного устарел, но я пишу его здесь, если другие ищут решение.

Каталог расширений PHP

Чтобы получить каталог расширений PHP, выполните эту команду

php-config --extension-dir

Конфигурация ORACLE

Когда вы запускаете команду config для oracle, вам нужно предоставить ее вместе с вашим домашним каталогом Oracle (предполагается, что вы установили ORACLE XE):

./configure -with-oci8=shared,$ORACLE_HOME/xe

Политика SELinux

Вы должны адаптировать свою политику SELinux для поддержки того, что вы пытаетесь достичь. Полностью отключить его не рекомендуется.

В вашей системе Fedora попробуйте запустить:

which audit2allow

Если вы получили ошибку, которая указывает, что не может найти audit2allow тогда вам нужно установить этот пакет:

yum install policycoreutils-python

Получив этот пакет, вы можете направить файлы журнала аудита в audit2allow чтобы он создал ваш файл политики:

grep httpd /var/log/audit/audit.log | audit2allow -m httpd > http.te

Это создаст файл http.te это удобно для человека, чтобы вы могли посмотреть, какие дополнения к политике он внесет в вашу конфигурацию SELinux. Если вы согласны с изменениями, выполните эти команды (обратите внимание на заглавную букву M в следующей команде и строчную букву m ранее)

grep httpd /var/log/audit/audit.log | audit2allow -M httpd
semodule -i httpd.pp

Это может занять несколько секунд - вы можете убедиться, что политика была установлена, запустив:

semodule -l | grep httpd

Вам нужно будет перезапустить httpd, чтобы он мог попытаться загрузить плагин oci8.so

service httpd restart

НТН

Другие вопросы по тегам