Невозможно заставить PHP работать в среде Apache VirtualHosting

Невозможно заставить PHP работать в среде Apache VirtualHosting

Пытаюсь настроить среду Apache VirtualHosting с PHP на свежесозданном узле CentOS на облачном сервере DigitalOcean.

Проблема в том, что, хотяВиртуальный хостинг работает сам по себе, PHP — нет.

Настройка сервера:

  • Веб-сервер: CentOS 6.5 с Apache/2.2.15
  • Версия PHP: 5.3.3 (для использования в качестве модуля Apache)

Предпринятые шаги:

Вход в систему каккореньпользователь,

  • Установка Apache и php:yum -y install httpd php
  • Создание нового файла конфигурации виртуального хоста, как показано ниже:

Файл:/etc/httpd/conf.d/vhosts.conf

NameVirtualHost *:80
<VirtualHost *:80>
     ServerAdmin [email protected]
     ServerName example.org
     ServerAlias www.example.org
     DocumentRoot /srv/www/example.org/public_html/
     ErrorLog /srv/www/example.org/logs/error.log
     CustomLog /srv/www/example.org/logs/access.log combined
</VirtualHost>
  • Создание новых каталогов для сайта виртуального хоста

Как показано ниже,

mkdir -p /srv/www/example.org/public_html
mkdir -p /srv/www/example.org/logs
  • Размещаем .phpи .htmlтестируем файлы, как показано ниже:

Файлы в /srv/www/example.org/public_html/(DocumentRoot)

echo "<HTML>It work's</HTML>"      > /srv/www/example.org/public_html/index.html
echo "<?php echo ("It works"); ?>" > /srv/www/example.org/public_html/index.php

Далее, когда я указываю в своем браузере index.html, это работает. Но когда яукажите в моем браузере, index.phpя получаю пустую страницу.

Поиск неисправностей

(То, что я уже сделал/проверил, но безуспешно)

  • Убедитесь, что Apache запущен и DocumentRootдоступен.
  • Все каталоги 755и файлы644
  • Проверил журнал доступа Apache. Запросы html-страницы есть с кодом статуса 200, но .phpв журнале доступа нет запроса страницы
  • Нет ошибок в журнале ошибок Apache или PHP, нет ошибок в/var/log/messages
  • Попробовал добавить php_admin_flag engine onв файл конфигурации vhost

Также см. ниже содержание/etc/httpd/conf.d/php.conf

<IfModule prefork.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
  LoadModule php5_module modules/libphp5-zts.so
</IfModule>
AddHandler php5-script .php
AddType text/html .php
DirectoryIndex index.php

решение1

По моему опыту, PHP отображает пустую страницу, когда сталкивается с серьезной базовой ошибкой. Обычно это легко исправить, но, к сожалению, в журналах Apache, PHP или syslog обычно ничего не регистрируется, что затрудняет процесс устранения неполадок.

Найдите файл конфигурации php.ini с помощью:

php -i | grep "php.ini"

Это должно привести к чему-то вроде этого:

Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini

Отредактируйте этот файл конфигурации (в данном случае /etc/php.ini) с помощью вашего любимого текстового редактора и убедитесь, что отображение ошибок и ошибок запуска включено. Записи должны выглядеть следующим образом:

display_errors = On
display_startup_errors = On

Наконец, перезапустите Apache, чтобы он прочитал новую конфигурацию PHP и получил доступ к вашей странице через curl или браузер. Это должно привести к сообщению об ошибке, которое поможет в процессе устранения неполадок.

решение2

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

NameVirtualHost *:80
<VirtualHost *:80>
     ServerAdmin [email protected]
     ServerName example.org
     ServerAlias www.example.org
     DocumentRoot /srv/www/example.org/public_html/
     ErrorLog /srv/www/example.org/logs/error.log
     CustomLog /srv/www/example.org/logs/access.log combined
</VirtualHost>

PHP работает под Apache, поэтому любые всплывающие ошибки будут отображаться в журналах сервера. Я рекомендую войти на сервер и использовать tailвот так:

tail -f -n 200 /srv/www/example.org/logs/error.log

Но это общий лог Apache для вас? Или это конфигурация DigitalOcean? Потому что этот путь /srv/www/example.org/logs/кажется довольно странным. В стандартном Linux он будет в таком месте:

tail -f -n 200 /var/log/apache2/error.log

Независимо от того, куда на самом деле отправляются логи, это будет ключом к тому, что происходит — или не происходит — с PHP и Apache на вашем сервере.

Связанный контент