Получение пустой страницы PHP поверх Apache

На недавно настроенном облачном сервере digitalOcean (CentOS) я установил php и Apache. Веб-сервер работает нормально:

[root@a2m5cent01 httpd]# service httpd status httpd (pid 11232) is running... [root@a2m5cent01 httpd]# php --version | head -1 PHP 5.3.3 (cli) (built: Dec 11 2013 03:29:57) 

Но браузер покажет пустые страницы (белая страница), если я попытаюсь посетить любую php-страницу.

Вот что я сделал до сих пор для устранения неполадок:

  1. Создал страницу со следующим содержимым: <?php phpinfo(); ?> <?php phpinfo(); ?> . Он отображает пустую страницу при просмотре в браузере.
  2. Просто чтобы убедиться, что apache указывает на правильный каталог, разместил там статическую .html страницу и увидел, что в браузере это прекрасно, поэтому apache работает, и каталог верен.
  3. В /etc/php.ini изменилась директива display_errors на On . Все еще пустая страница
  4. В конфигурационном файле Apache ( /etc/httpd/conf/httpd.conf ) найдена эта строка Include conf.d/*.conf . Внутри conf.d есть файл php.conf содержащий строку: LoadModule php5_module modules/libphp5.so . Убедитесь, что этот .so-файл действительно существует в этом месте.
  5. В том же файле у меня есть и эти две строки: AddHandler php5-script .php и AddType text/html .php
  6. Выполнение php-страницы из CLI, она отлично работает – поэтому php работает локально.

Тогда почему это всегда показывает пустую / белую страницу над браузером? Что еще мне не хватает?

EDIT Основываясь на предложениях от @Nathan,

  1. Я проверил файл журнала ошибок Apache, не смог увидеть там какую-либо ошибку.
  2. Мой /etc/php.ini говорит, что php error_log находится в виде syslog . Поэтому я проверил /var/log/messages но не смог найти сообщение об ошибке PHP
  3. Затем я поместил некоторый нормальный HTML в php-файл, содержащий phpinfo() . Интересно, что я обнаружил, что даже обычные HTML-тексты также не приходят. Он по- прежнему создает пустую страницу.
  4. Затем я проверил журнал access Apache. Сюрприз! Нет запроса GET для любых файлов PHP, которые я пытался загрузить в браузере. Но GET- запрос для всех не-php- файлов есть с кодом возврата 200.

Apache даже не регистрирует запрос на доступ к файлам PHP. Любая идея, почему это произойдет?

Я думаю, что ваша установка php с apache ошибочна. Вот почему вы не видите какую-либо страницу php на своем веб-сервере. Очистите удалите все существующие приложения, такие как httpd, php, php-fpm, php-cli и т. Д. И попробуйте очистить isntall в этом порядке

 yum install httpd -y yum install php php-common php-cli php-gd php-curl php-fpm -y 

затем убедитесь, что вы перезагрузили сервер httpd.

 service httpd restart 

Установите mod_fastcgi:

 yum install mod_fastcgi 

Запустите службу:

 service php-fpm start 

Перезапустить Apache:

 service httpd restart 

5. Конфигурация Apache с PHP-FPM

Откройте файл fastcgi.conf:

 nano /etc/httpd/conf.d/fastcgi.conf 

Добавьте это в конец файла:

 <IfModule mod_fastcgi.c> DirectoryIndex index.html index.shtml index.cgi index.php AddHandler php5-fcgi .php Action php5-fcgi /php5-fcgi Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -host 127.0.0.1:9000 -pass-header Authorization </IfModule> 

После этого поиска после «FastCgiWrapper» и убедитесь, что он установлен на «выключен», а затем сохраните файл.

Каталог / usr / lib / cgi-bin / должен существовать, поэтому мы создаем его:

 mkdir /usr/lib/cgi-bin/ 

Если mod_php установлен и включен, нам необходимо отключить его, поэтому откройте конфигурацию по адресу /etc/httpd/conf.d/php.conf:

 nano /etc/httpd/conf.d/php.conf 

Прокомментируйте строки AddHandler и AddType, чтобы они выглядели следующим образом:

 # # PHP is an HTML-embedded scripting language which attempts to make it # easy for developers to write dynamically generated webpages. # <IfModule prefork.c> LoadModule php5_module modules/libphp5.so </IfModule> <IfModule worker.c> LoadModule php5_module modules/libphp5-zts.so </IfModule> # # Cause the PHP interpreter to handle files with a .php extension. # #AddHandler php5-script .php #AddType text/html .php # # Add index.php to the list of files that will be served as directory # indexes. # DirectoryIndex index.php # # Uncomment the following line to allow PHP to pretty-print .phps # files as PHP source code: # #AddType application/x-httpd-php-source .phps 

Сохраните файл и перезапустите Apache:

 service httpd restart 

проверьте свой скрипт phpinfo ().

 <?php phpinfo(); ?> 

отсутствует «php» за первым «?» даст пустую страницу

Вы непосредственно переходите к файлу php? Или вы просто собираетесь в корне каталога?

Если позже, Apache может не распознавать .php как индекс каталога.

Чтобы протестировать, попробуйте создать файл .htaccess в своем веб-корне, содержащий следующую строку:

 DirectoryIndex index.php 

У меня такая же проблема … Проблема в iptables. ( Кажется, это так )

Попробуйте:

 service iptables stop ## check if it stop... service iptables status 

Затем попробуйте перезагрузить страницу еще раз.

Если у вас есть другое решение, поделитесь им.

[ edit ] Перезапуск службы iptables работает для меня.

Пытаться:

 service iptables restart 

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

cat /etc/php.ini | grep log_errors

Если log_errors отключен, включите его и проверьте этот ниже журнал после перезагрузки httpd. /var/log/httpd/error_log

– Также проверьте эту часть из конфигурации php.
cat /etc/php.ini | grep error_reporting

Это значение должно быть включено по умолчанию, чтобы display_errors работал.
error_reporting = E_ALL

Прежде всего, вы должны проверить разрешения своего файла. Если вы не предоставляете доступ для чтения публике, Apache создает пустую страницу без каких-либо ошибок.

Извините, что вы отправили старый поток … это важно.

У меня также были проблемы, когда html-ответ не выводил

После двойной проверки php.ini или моих файлов apache conf и по-прежнему не получал никакого вывода, я позже обнаружил, что я подавлял ошибку include / require для класса с @ , который был вложен в конструктор. Во включенном файле произошла синтаксическая ошибка, которая полностью остановила весь вывод при возникновении ошибок.

Итак, сначала проверьте свои обработчики. Если вы сначала сохраняете весь свой вывод в vars, и вы включаете в себя различные сценарии, в первую очередь, вам не придется видеть эти ошибки. Если вы подавите ошибки обработчика файлов, вы получите пустой экран, если у вас есть синтаксическая ошибка в файле.

Поиск файлов для всех экземпляров @ в вашем php-коде. Затем включите @include "/path_to/script.php"; include "/path_to/script.php"; или что-нибудь @$foo в $foo как такой var может ссылаться на зависимость, которая приводит к тому, что ваш скрипт заканчивается, и ничего не отображается в журнале ошибок httpd или в ответе http.