Apache-2.2

Apache 執行 HTML,但不執行 PHP;PHP CLI 工作

  • June 12, 2019

我正在使用 Apache 2.2.15 在 rhel 6.2 上執行 php 5.3.3,並且無法讓 Apache 解釋 PHP 程式碼。

沒有錯誤(在系統日誌、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

然而,當我直接從我的瀏覽器(例如​​ myserver.com/index.php)查看包含以下程式碼的 index.php 時,除了白屏之外什麼都沒有出現:

<?php echo 'Hello php World'; ?>

當在命令行上由 php 執行時,我將預期的文本輸出到終端(“ Hello php World”)。

什麼時候,我在 index.php 中添加一些 HTML,如下所示:

<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 所有,並且 apache 模組的 selinux 上下文:

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,而 apache 解釋的 php 沒有成功。

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 - 並且肯定會感激任何想法。如果它有用,這裡是我啟動 apache 時 /var/log/httpd/error_log 的內容:

[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配置覆蓋之外.

查看Dan 網站上的第 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

引用自:https://serverfault.com/questions/357245