Конфигурация 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
НТН