Apache-2.2

PHP沒有執行腳本,而是下載它們

  • September 18, 2014

我知道,一個非常典型的問題,但我沒有想法。是的,模組已安裝:

# aptitude search libapache2-mod-php5
i   libapache2-mod-php5                                                         - server-side, HTML-embedded scripting language (Apache 2 module)                       
p   libapache2-mod-php5filter                                                   - server-side, HTML-embedded scripting language (apache 2 filter module)

並啟用:

# ls -l /etc/apache2/mods-enabled/php*
lrwxrwxrwx 1 root root 27 2011-08-31 13:49 /etc/apache2/mods-enabled/php5.conf -> ../mods-available/php5.conf
lrwxrwxrwx 1 root root 27 2011-08-31 13:49 /etc/apache2/mods-enabled/php5.load -> ../mods-available/php5.load

# cat /etc/apache2/mods-enabled/php5.conf
<IfModule mod_php5.c>
 AddType application/x-httpd-php .php .phtml .php3 .php5
 AddType application/x-httpd-php-source .phps
</IfModule>

# cat /etc/apache2/mods-enabled/php5.load
LoadModule php5_module /usr/lib/apache2/modules/libphp5.so

Apache 聲稱 PHP 是 lodade:

# apache2ctl -t -D DUMP_MODULES
Loaded Modules:
core_module (static)
log_config_module (static)
logio_module (static)
mpm_prefork_module (static)
http_module (static)
so_module (static)
alias_module (shared)
auth_basic_module (shared)
authn_file_module (shared)
authz_default_module (shared)
authz_groupfile_module (shared)
authz_host_module (shared)
authz_user_module (shared)
autoindex_module (shared)
cgi_module (shared)
deflate_module (shared)
dir_module (shared)
env_module (shared)
mime_module (shared)
negotiation_module (shared)
php5_module (shared)
proxy_module (shared)
proxy_html_module (shared)
proxy_http_module (shared)
rewrite_module (shared)
setenvif_module (shared)
status_module (shared)
Syntax OK

文件根目錄中沒有 .htaccess 並且 404 顯示 PHP 存在:

Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny13 with Suhosin-Patch proxy_html/3.0.0 伺服器在 wiki.example.com 埠 80

日誌顯示沒有錯誤。

任何想法還有什麼要檢查的?

首先,確保您的 apache 配置正在載入它,例如:

LoadModule php5_module modules/libphp5.so

然後,確保 Apache 知道解釋 .php 文件,例如

AddType text/html .php
AddType application/x-httpd-php .php

編輯

您提到錯誤日誌不包含錯誤。.php 腳本請求的狀態碼是什麼?(200、500 等)

在您的 php.ini 文件中,檢查log_errorsdisplay_errors和的設置error_log。如果正在記錄錯誤,它們將位於 指定的位置error_log。我認為這是預設行為(記錄,不顯示到螢幕)。

如果您的應用需要 MySQL,請確保您也安裝了 php5-mysql 包。對於任何其他需要的模組也是如此。

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