2014-01-13 4 views
6

В новом установочном облачном облачном сервере (CentOS) я установил php и Apache. Веб-сервер работает нормально:Получение пустой страницы PHP поверх Apache

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

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

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

  1. создал страницу с следующим содержанием: <?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 На основе предложений @ Натан,

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

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

+0

Apache работает? –

+0

@ Дагон Я думал, что ответил на это в первом абзаце моего вопроса. Да. – hashbrown

+1

подтвердили ли вы, что ваши журналы ошибок http/php не отображают сообщений? также для пинков Я бы добавил несколько HTML до и после phpinfo(), чтобы подтвердить, что страница загружается, но PHP не запущен. – Nathan

ответ

4

Я думаю, что ваша установка php с apache неисправна. Вот почему вы не видите какую-либо страницу php на своем веб-сервере. Почистите удалить все существующие приложения, как HTTPD, PHP, PHP-FPM, PHP-кли и т.д., и попытаться очистить isntall в этом порядке

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

затем убедитесь, что вы перезапустите YOUT сервер 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/Библиотека/CGI-BIN/каталог должен существовать, поэтому мы создаем его:

mkdir /usr/lib/cgi-bin/ 

Если установлен mod_php и включен, необходимо отключить его так открыть конфигурацию в/и т.д./HTTPD/conf.d/PHP.конф:

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

Закомментируйте ДобавитьОбработчик и 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 
+0

Я попробую переустановить с помощью fast-cgi. Пожалуйста, держись, я уточню тебя. – hashbrown

+0

Похоже на ошибку в изображении DO CentOS 6.5. Снижение до 6.4 решает проблему. – hashbrown

+0

Ох. Мне пришлось использовать Centos 6.4 при установке LAMP. Рад, что проблема решена. – DeSmOnd

1

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

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

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

DirectoryIndex index.php 
+0

Спасибо за ваш ответ, но, пожалуйста, не задавайте вопросов в разделе ответа. Используйте комментарий для этого. Да, я перехожу непосредственно в файл .php, и, кроме того, 'DirectoryIndex' уже установлен. – hashbrown

+1

Извинения, комментарий требует 50 репутации, видимо, что, как видите, у меня пока нет. – Aidan

0

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

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

+1

'log_errors = On' и ' error_reporting = E_ALL & ~ E_DEPRECATED' – hashbrown

1

У меня есть один и тот же вопрос .. Проблема в iptables. (Похоже, что это)

Попробуйте с:

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

Тогда попробуйте перезагрузить страницу.

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

[Редактировать] Перезагрузка службы iptables работает для меня.

Try:

service iptables restart 
10

проверить ваш phpinfo() сценарий.

<?php 
phpinfo(); 
?> 

Отсутствует "php" за первым "?" даст пустую страницу

+0

Да, спасибо! –

+0

Это сработало как приветствие чара – copremesis

1

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

+1

Это должен быть комментарий. –

0

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

Я также имел эти проблемы там, где нет HTML ответа не выводя

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

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

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

+0

Просто FYI вам не нужно оправдывать отправку ответа. И это не потоки. Это просто вопросы и ответы. –

+0

Я уверен, что я не причинил вреда чьим-то чувствам –

Смежные вопросы