为什么我的PHP标签被转换成HTML注释?

10

一位朋友的灯泡主机似乎配置不正确。我尝试执行php,但似乎没有起作用。

在Chrome的检查元素中:

<?php echo 'test'; ?> 

becomes :

<!--?php echo 'test'; ?-->

此外,它一直在触发文件下载,而不是作为网页打开。
我尝试在.htaccess文件中尝试了各种代码,但似乎没有任何效果:
AddType x-mapp-php5 .php
AddType application/x-httpd-php .php
AddHandler x-mapp-php5 .php

2
如果 PHP 正在运行,为什么您能够在 Chrome 中检查 <?php echo 'test'; ?> - Matthew
1
没有看到您配置文件的相关部分,很难为您提供帮助。您是通过哪里加载PHP模块或者通过CGI执行它的呢?请参考http://php.net/manual/en/install.php。 - Brad
@Matthew,他的问题的核心是PHP没有运行。 - Brad
2
说实话,我可以证实这种情况确实发生了(如果将PHP发送到Chromium,无论出于什么原因)。但是,老实说,为什么PHP不能运行您的脚本呢? - David Thomas
@Brad,所以我的括号是什么意思...? - David Thomas
显示剩余3条评论
12个回答

10

正确配置 PHP 操作的地方是 httpd.conf 文件,该文件位于 Apache 安装目录下的 conf 子目录中。

在那里,您需要查找模块加载部分,它将是一堆以 LoadModule 开头的行。在这些行中的某个位置,您应该有以下内容(或非常类似):

LoadModule php5_module "location\of\your\php\installation"
AddType application/x-httpd-php .php
PHPIniDir "location\of\your\php\configuration\file"

我对Linux不是很熟悉,但在Windows(WAMP)安装中,这些东西可能是以下内容:

LoadModule php5_module "c:/program files/php/php5apache2.dll"
AddType application/x-httpd-php .php
PHPIniDir "C:/program files/php"

在我的电脑上,httpd.conf 文件位于 C:\Program Files\Apache Group\Apache2\conf\httpd.conf

也有可能您的计算机根本没有安装 PHP,如果是这样,您将需要下载并安装它。 Brad 已经在他的评论中发布了相关链接(顺便点个赞,Brad),但为了方便集中讨论:

PHP:安装和配置手册


7
你的Chrome浏览器有误。
你的PHP源文件是<?php echo 'test'; ?>。因为PHP没有被执行,所以该文件被发送给浏览器。如果浏览器应该解释此文本,则会遇到<??>标记。它们有意义 - 它们是“XML处理指令”,并且在开放角度之后的文本定义了目标。
显然,浏览器不知道名为“PHP”的目标,因此忽略此文本。
然后元素检查器尝试显示DOM,并且关于原始源代码正在撒谎,因为它正在使用已解析的源 - 这很棒,因为您通常希望了解浏览器操作的数据,包括浏览器如何解释您的源代码。
但是,如果出现任何错误,浏览器将尝试修复它,并且这个修复策略会被包含在元素检查器中。
显然,对于未知的XML处理指令,修复方法是将其注释掉。

6
这刚刚发生在我身上。结果发现我忘记将文件类型从.html更改为.php。

我不知道这是必要的,谢谢澄清! - Chagai Friedlander

2

这个答案并不适用于OP的特定问题变体,但我遇到了基本相同的问题-<? var_dump($test); ?>被转换为<!--? var_dump($test); ?--> - 我可以通过在php.ini中启用short_open_tag来解决。


1
谢谢!我正在使用默认的内置PHP Web服务器,在其中php.ini默认不允许短的<?开标签(将其注释掉),并坚持使用完整的<?php - James Daily

2

听起来你的LAMP配置中PHP没有正确配置或安装。你使用的是哪个发行版?也许只需运行一个命令重新安装PHP即可解决问题,否则你可能需要编译支持PHP的Apache。


嗯,说实话我不知道这些问题的答案。我从来没有太涉及这样的事情。我猜需要更多的探索/学习。 - Zach Lysobey
我会完全删除AddHandlers,它们似乎是不必要的,并且可能导致问题。 - kalpaitch
同样的问题,无论是否加上这个,只是为了让人们看到我尝试过一些方法,不要建议我已经尝试过的东西。 - Zach Lysobey
@brad 根据Linux主机的不同...例如:gentoo,您需要在编译apache时添加php支持。(他确实说了LAMP吧?):P。Zach:如果您想在Windows平台上玩弄PHP / Apache,可以下载WAMP版本。目前看来,您当前的服务器配置不知道已安装PHP。 - Ben Ashton
@BenAshton,他可能正在通过CGI执行PHP。由于他尚未发布配置文件,因此无法确定。 - Brad
显示剩余3条评论

1
如果您将代码放置在标准目录之外(开发场景,在我的情况下),则应检查您的 /etc/apache2/mod-enabled 或 /etc/apache2/mod-available 中的 php5.conf(对于 Ubuntu),并注释掉注释指示的行。
# 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>

1

当我不小心尝试通过file://协议在服务器上的浏览器中测试本地php文件时,我遇到了完全相同的问题。

所以答案只有一个:“PHP先生已经离开大楼了”。我们需要检查配置、文件位置或访问权限。

而浏览器只是试图修复网页并帮助我们。


0
在Ubuntu系统上,安装apache php5插件对我有效。
sudo apt-get install libapache2-mod-php5
sudo service apache2 restart

我有一个包含 <? phpinfo(); ?> 的 info.php 文件,当我尝试这个解决方案时,会得到“libapache2-mod-php5 已经是最新版本”的提示 - 而且 Apache 服务器仍然用 <!-- comments --> 包围我的 PHP 代码。 - NULL pointer

0

我刚刚解决了这个问题。 你需要从WAMP中打开文件,而不是直接从硬盘目录中打开。

在浏览器中输入:localhost/...../yourfile.php

否则,你的浏览器会将所有的<?php ?> 替换为<!-- ?php ?-->


0

看起来你需要明确指示apache将html文件处理为php文件,我曾经遇到过同样的问题,但将文件重命名为.php后问题得到了解决。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接