Я запускаю php 5.3.3 на rhel 6.2 с Apache 2.2.15, и мне не удается получить PHP-код, интерпретируемый Apache.
Ошибок нет (в системном журнале, httpd / error_log или php_errors.log) - я включил отчет об ошибках в php.ini:
error_reporting = E_ALL & ~E_DEPRECATED
display_errors = On
log_errors = On
error_log = /var/log/php_errors.log
Тем не менее, когда я просматриваю свой index.php, содержащий следующий код, прямо из моего браузера (например, myserver.com/index.php), ничего не появляется, кроме белого экрана:
<?php echo 'Hello php World'; ?>
При выполнении php в командной строке я получаю ожидаемый текстовый вывод на терминал ("Hello php World
").
Когда я добавляю HTML в index.php, как в:
<html>
<p>Hello from within html</p>
<?php echo 'Hello php World'; ?>
</html>
и просмотрите его в моем браузере, он вернет просто "Hello from within html
. "Однако при выполнении из командной строки я получаю:
<html>
<p>Hello from within html</p>
Hello php World</html>
Итак, PHP анализируется и интерпретируется через CLI, но не через Apache.
Я подтвердил, что index.php и его родительская файловая структура принадлежат apache: apache и что контекст selinux модулей apache:
chcon -t httpd_sys_script_exec_t /usr/lib/httpd/modules/*
chcon -t httpd_sys_script_exec_t /usr/lib/php/modules/*
и анализируемых файлов .php:
chcon -R -h -t httpd_sys_content_t /export1
верны. Я не думаю, что проблема в selinux, потому что у меня нет ошибок с правами доступа, и я временно отключил selinux echo 0 >/selinux/enforce
без всякого успеха интерпретации php Apache.
Модуль php загружается с его конфигурацией, а расширение .php понимается как настроенное в httpd.conf:
LoadModule php5_module /usr/lib/httpd/modules/libphp5.so
AddType application/x-httpd-php .php .phtml
PHPIniDir /etc/
И apache знает, что искать index.php из:
DirectoryIndex index.html index.html.var index.php
как установлено в httpd.conf.
Я исчерпал свои идеи о том, где моя проблема - даже попытался переустановить PHP - и, конечно, буду признателен за любые идеи. В случае использования, вот содержимое / var / log / httpd / error_log, когда я запускаю apache:
[Fri Feb 03 13:44:53 2012] [notice] SELinux policy enabled; httpd running as context unconfined_u:system_r:httpd_t:s0
[Fri Feb 03 13:44:53 2012] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Fri Feb 03 13:44:53 2012] [warn] module php5_module is already loaded, skipping
[Fri Feb 03 13:44:53 2012] [notice] Digest: generating secret for digest authentication ...
[Fri Feb 03 13:44:53 2012] [notice] Digest: done
[Fri Feb 03 13:44:54 2012] [warn] mod_wsgi: Compiled for Python/2.6.2.
[Fri Feb 03 13:44:54 2012] [warn] mod_wsgi: Runtime using Python/2.6.6.
[Fri Feb 03 13:44:54 2012] [notice] Apache/2.2.15 (Unix) DAV/2 PHP/5.3.3 mod_ssl/2.2.15 OpenSSL/1.0.0-fips mod_wsgi/3.2 Python/2.6.6 mod_perl/2.0.4 Perl/v5.10.1 configured -- resuming normal operations
Пожалуйста помоги!
Кажется, что php5_module
уже загружен вами и загружается позже по умолчанию rhel6
конфигурация или конфигурация на rhel6
загружает модуль php5_module
... что само по себе не имеет значения, за исключением того факта, что конфигурация, которую вы вводите, переопределяется по умолчанию rhel6
конфигурация.
Глядя на шаг 11 из Сайт Дэна, который работал у меня в прошлом, когда я забывал и нуждался в быстром напоминании:
# Make sure there's only **1** line for each of these 2 directives:
# Use for PHP 4.x:
#LoadModule php4_module modules/libphp4.so
#AddHandler php-script .php
# Use for PHP 5.x:
LoadModule php5_module modules/libphp5.so
AddHandler php5-script .php
# Add index.php to your DirectoryIndex line:
DirectoryIndex index.html index.php
AddType text/html .php
# PHP Syntax Coloring
# (optional but useful for reading PHP source for debugging):
AddType application/x-httpd-php-source phps
Для меня проблема заключалась в том, что мод не был включен в apache2.
Чистая установка Debian, apache2 и php7
Сначала мне пришлось отключить мод mpm_event, который был включен по умолчанию, я не знаю почему. Кстати, mpm - очень чистый способ использования PHP, вы должны рассмотреть его вместо мода apache2;) Но что ж, для быстрой работы:
# a2dismod mpm_event
# a2enmod php7.0
# systemctl restart apache2
сделали свое дело :)
наслаждаться
У меня была аналогичная проблема, и я наконец исправил ее, установив short_open_tag = On
в /etc/php.ini
. Остерегайтесь файлов конфигурации по умолчанию при обновлении!
Сказав что-то очевидное для меня, вы никогда не указали, как вы пытаетесь получить доступ к файлу примера. Вы получаете доступ index.php
прямо (т.е. http://example.com/folder/index.php)?
Если нет, обратите внимание, что если есть index.html
он будет вызываться вместо этого из-за порядка индексации каталогов:
DirectoryIndex index.html index.html.var index.php
Наконец, это следует спрашивать на serverfault.com, а не здесь.