我有一台装有 suPHP、Apache2 和 PHP5.4 的服务器。
我注意到文档 index.html 会执行 PHP 代码,而 test.html 不会执行 PHP 代码。我当然不希望 PHP 代码在 index.html 文件内执行。
我不知道应该在哪里查找问题。我没有在配置中找到将 php 处理程序分配给某些非 *.php 文件的位置。
这是我的 mods-available/suphp.conf
<IfModule mod_suphp.c>
<FilesMatch "\.ph(p3?|tml)$">
SetHandler application/x-httpd-suphp
</FilesMatch>
suPHP_AddHandler application/x-httpd-suphp
# suPHP_PHPPath /usr/bin/php
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
# Order allow,deny
# Allow from all
</FilesMatch>
AddType application/x-httpd-php-source .phps
suPHP_AddHandler application/x-httpd-php-source
# AddHandler application/x-httpd-php-source
<Directory />
suPHP_Engine on
</Directory>
# By default, disable suPHP for debian packaged web applications as files
# are owned by root and cannot be executed by suPHP because of min_uid.
# Benötigen wir für Nagios3
# <Directory /usr/share>
# suPHP_Engine off
# </Directory>
# # Use a specific php config file (a dir which contains a php.ini file)
# suPHP_ConfigPath /etc/php5/cgi/suphp/
# # Tells mod_suphp NOT to handle requests with the type <mime-type>.
# suPHP_RemoveHandler <mime-type>
</IfModule>
这是我的 mods-available/php5.conf
<IfModule mod_php5.c>
<FilesMatch "\.ph(p3?|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>
# To re-enable php in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.
# <IfModule mod_userdir.c>
# <Directory /home/*/public_html>
# php_admin_value engine Off
# </Directory>
# </IfModule>
</IfModule>
答案1
检查您的 .htaccess 文件是否存在以下内容,因为您可能在那里打开了 php 解释:
AddType application/x-httpd-php .html .htm
如果不起作用,请进行字符串搜索。它很可能在某处被打开了。
grep -rnw 'web_directory_here' -e "x-httpd-php"
如果在任何地方发现 AddType,请将其删除。
==
更新:另一个需要检查的地方是您的 apache MIME 类型,以确保 html 没有被设置为 php。确保 html 不在下面的任何一行中。
check in httpd/conf
application/x-httpd-php phtml php php3 php4 php5 php6
application/x-httpd-php-source phps
答案2
您引用了 mods-available/php5.conf。您的 mod_php5 是否已启用,即您是否有 /etc/apache2/mods-enabled/php5.load?如果是,请尝试a2dismod php5
,因为不建议同时启用 suphp 和 mod_php,至少不建议全局启用。还可以尝试在您的 index.html 中使用 phpinfo() 来确定哪个模块正在处理请求。