На недавно настроенном облачном сервере 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-страницу.
Вот что я сделал до сих пор для устранения неполадок:
<?php phpinfo(); ?>
<?php phpinfo(); ?>
. Он отображает пустую страницу при просмотре в браузере. .html
страницу и увидел, что в браузере это прекрасно, поэтому apache работает, и каталог верен. /etc/php.ini
изменилась директива display_errors
на On
. Все еще пустая страница /etc/httpd/conf/httpd.conf
) найдена эта строка Include conf.d/*.conf
. Внутри conf.d
есть файл php.conf
содержащий строку: LoadModule php5_module modules/libphp5.so
. Убедитесь, что этот .so-файл действительно существует в этом месте. AddHandler php5-script .php
и AddType text/html .php
Тогда почему это всегда показывает пустую / белую страницу над браузером? Что еще мне не хватает?
EDIT Основываясь на предложениях от @Nathan,
/etc/php.ini
говорит, что php error_log находится в виде syslog
. Поэтому я проверил /var/log/messages
но не смог найти сообщение об ошибке PHP HTML
в php-файл, содержащий phpinfo()
. Интересно, что я обнаружил, что даже обычные HTML-тексты также не приходят. Он по- прежнему создает пустую страницу. 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.