
Проблема:
Это продолжается уже довольно долго. У меня только один раз получилась правильная установка, и после этого она либо:
- PHP-страницы показывают PHP-коды (текущая ошибка не актуальна, но я сталкивался с ней)
- PHP-страницы возвращают «Внутреннюю ошибку на сервере»
Все, что я действительно хочу, это заставить PHP подключиться к Oracle 11g XE через oci8. Я понятия не имел, что это будет так сложно.
Кроме того, просмотр журналов ошибок (я предполагаю, что это журналы ошибок PHP), расположенных в /var/log/httpd/error_log
, выявляет следующую ошибку:
Фатальная ошибка PHP: Неизвестно: Не удалось открыть требуемый '/var/www/html/info.php' (включая путь = '.:/usr/share/pear:/usr/share/php').
Я никогда раньше с таким не сталкивался.
Система:
- Федора 19 x86_64
- Oracle 11g XE
- Апач 2.4.6
- PHP 5.5.4
Дополнительная информация:
info.php содержит только следующее:
<?php
phpinfo();
?>
php -i
работает, хотя я не уверен, что там искать.
Что я пробовал:
Много. Но поскольку я переформатировал ПК и начал все заново, вот список того, что я сделал:
- Установлен Oracle 11g XE
- Правильно сделал резервную копию моей базы данных в указанном Oracle
- Измените .bashrc, добавив следующее
TMP=/tmp; экспорт TMP
TMPDIR=$TMP; экспорт TMPDIRORACLE_HOSTNAME=localhost.localdomain; export ORACLE_HOSTNAME ORACLE_UNQNAME=DB11G; export ORACLE_UNQNAME ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE ORACLE_HOME=$ORACLE_BASE/product/11.2.0/xe; export ORACLE_HOME ORACLE_SID=XE; export ORACLE_SID NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh`; export NLS_LANG ORACLE_TERM=xterm; export ORACLE_TERM PATH=/usr/sbin:$PATH; export PATH PATH=$ORACLE_HOME/bin:$PATH; export PATH LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;
экспортировать CLASSPATH
if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi
- yum groupinstall "Библиотеки разработки"
- yum установить httpd
- yum установить php
Я запустил Apache, настроил его на запуск при загрузке, смог попасть на тестовую страницу Fedora и поместил тестовую страницу PHP в /var/www/html/
каталог.
localhost работает нормально.
localhost/info.php возвращает «Внутренняя ошибка сервера».
Понятия не имею, что я делаю не так. Я даже PHP еще не запустил, так что я очень беспокоюсь о своей способности подключить его к Oracle. Есть идеи/предложения? Спасибо.
решение1
Проверьте разрешения на:
/var/www/html/info.php
Я припоминаю, что у меня была похожая ошибка, когда у пользователя, запустившего процесс Apache, не было необходимых прав доступа к этому файлу.
Это не очень хорошая вещь, но вы можете записать текущие права доступа info.php, chmod 777 /var/www/html/info.php и посмотреть, работает ли это. Если так, то это проблема и попробуйте решить ее.
Также проверьте, следуя инструкциям @GeoSword, отображается ли PHP-код вместо HTML, так как это означает, что конфигурация PHP в Apache неверна.
решение2
Похоже, здесь происходит несколько вещей.
Страницы, которые показывали php-код вместо результата, вероятно, потому, что обработчик php не был правильно определен в конфигурации apache. Установки Redhat обычно заботятся о таких вещах. Однако что-то вроде этого необходимо где-то в вашей конфигурации apache для обработки php-файлов
LoadModule php5_module modules/libphp5.so
AddHandler application/x-httpd-php .php .php5 .phtml
AddHandler application/x-httpd-php-source .phps
Фатальная ошибка, которую вы получаете, вероятно, связана с ошибкой, которую вы видите в /var/log/httpd/error_log.
Похоже, /var/www/html/info.php не существует, а вашей php-программе он очень нужен. Я уверен, что мне не нужно говорить вам, что с этим делать! :)