为啥我的 php 标签被转换为 html 注释?

Posted

技术标签:

【中文标题】为啥我的 php 标签被转换为 html 注释?【英文标题】:Why are my php tags converted to html comments?为什么我的 php 标签被转换为 html 注释? 【发布时间】:2012-10-01 10:40:39 【问题描述】:

朋友的灯主机似乎配置错​​误。我尝试执行php,但它似乎不起作用。

在 Chrome 的检查元素中:

<?php echo 'test'; ?> 

变成:

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

此外,它一直在触发文件下载,而不是作为网页打开。

我尝试了.htaccess 文件中的各种代码,但似乎没有任何效果:

AddType x-mapp-php5 .php
AddType application/x-httpd-php .php
AddHandler x-mapp-php5 .php

【问题讨论】:

为什么你可以在 chrome 中检查 &lt;?php echo 'test'; ?&gt; 开始(如果 php 正在运行)? 如果不查看配置的相关部分,很难为您提供帮助。你在哪里加载 PHP 模块,或者通过 CGI 执行它? php.net/manual/en/install.php 那么你为什么要强制 php 读取 .php 文件,如果它不这样做,它可能还没有安装。我添加的最后一个类型和 AddHandler for php 服务器不理解它下载了文件,这就是原因。 @Matthew,他的问题的重点是 PHP 没有运行。 好吧,我可以confirm that this happens (if php is sent to Chromium, for whatever reason)。不过,老实说,为什么 PHP 不运行您的脚本? 【参考方案1】:

我有时也有同样的问题,可能你文件的扩展名是“html”。 改成“php”就OK了。

【讨论】:

命名为.html肯定会让它不被正确理解为php代码,但它不会导致“触发文件下载”的问题跨度> 【参考方案2】:

在 Ubuntu 系统上,安装 apache php5 插件对我有用:

sudo apt-get install libapache2-mod-php5
sudo service apache2 restart

【讨论】:

我有一个包含 phpinfo(); ?> 并在我尝试此解决方案时得到“libapache2-mod-php5 已经是最新版本” - apache 服务器仍然用 包围我的 php 代码【参考方案3】:

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

【讨论】:

谢谢!我使用的是默认的内置 PHP 网络服务器,其中 php.ini 默认也不允许短的&lt;? 开始标记(将其排除),并坚持使用完整的&lt;?php【参考方案4】:

看来您必须明确指示 apache 将 html 文件作为 php 文件处理,我遇到了同样的问题,但将文件重命名为 .php 为我解决了这个问题。

【讨论】:

【参考方案5】:

如果您将代码放在标准目录之外(在我的情况下是开发场景),您应该在 php5.conf 中检查您的 /etc/apache2/mod-enabled 或 /etc/apache2/mod-available(对于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>

【讨论】:

【参考方案6】:

我刚刚解决了同样的问题。 您需要从 WAMP 而非硬盘目录中打开文件。

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

否则,您的浏览器将替换所有&lt;?php ?&gt; &lt;!-- ?php ?--&gt;

【讨论】:

【参考方案7】:

这只是发生在我身上。原来我忘记将文件类型从 .html 更改为 .php

【讨论】:

我不知道这是需要的,谢谢澄清!【参考方案8】:

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

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

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

【讨论】:

【参考方案9】:

你的 Chrome 在骗你。

您的 PHP 源文件是 &lt;?php echo 'test'; ?&gt;。因为没有执行 PHP,所以这个文件被发送到浏览器。如果浏览器应该解释这个文本,它会偶然发现&lt;? ?&gt; 标记。它们是有含义的——它们是“XML处理指令”,打开角度后面的文字定义了目标。

显然浏览器不知道名为“PHP”的目标,因此忽略此文本。

然后元素检查器尝试显示 DOM 并在原始源代码上撒谎,因为他正在处理 PARSED 源代码 - 这很好,因为您通常想知道浏览器对哪些数据进行操作,这包括浏览器如何解释您的源代码。

但如果你犯了任何错误,浏览器会尝试修复它,并且修复包含在元素检查器中。

显然,对未知 XML 处理指令的修复是通过将其注释掉来禁用它。

【讨论】:

【参考方案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 已经在他的一个 cmets 中发布了相关链接(+1,顺便说一句,Brad),但为了将所有内容集中在一个位置:

PHP: Installation and Configuration - Manual

【讨论】:

【参考方案11】:

听起来您使用的编辑器正在更改您输入的内容。确保你想要的文件是文件中的实际内容。使用 FTP 上传 php 文件应该可以确保这一点。

【讨论】:

不,服务器上的文件已上传。我想也许检查元素就是这样做的 这不是我的经验。也可以试试“查看页面源代码”。 好吧,代码在查看源代码中看起来“正确”。您使用什么编辑器在保存后更改您的文件? 有很多“帮助”新手用户输入 HTML 文本的编辑器。这些编辑器会自动将 【参考方案12】:

在我看来,您的 PHP 没有正确配置或安装在您的灯配置中。您使用的是什么发行版?它可能就像运行命令重新安装 PHP 一样简单,否则您可能需要编译支持 php 的 apache。

【讨论】:

嗯,老实说,我不知道这些东西的答案。我从来没有做过这样的事情。我想更多的探索/学习是有序的。 "编译支持 PHP 的 Apache"... 什么? 我会完全删除 AddHandlers,它们听起来没有必要,可能会导致问题。 same with and without... 只是把它放在问题中,这样人们就可以看到我正在尝试的东西,并且没有建议我已经尝试过的东西 @brad 取决于 Linux 主机...例如:gentoo 您将需要在编译 apache 时添加 php 支持。 (他确实说过 LAMP 不是吗?):P。 Zach:如果您想在 Windows 平台上使用 PHP/Apache,您可以下载 WAMP 版本。此时,您当前的服务器配置似乎不知道安装了 PHP。

以上是关于为啥我的 php 标签被转换为 html 注释?的主要内容,如果未能解决你的问题,请参考以下文章

PHP 将 HTML 标签写入文件并显示

php如休将已经被html化的字符串转换回原来的字符串!!

PHP/HTML 注释标签

Android 逆向IDA 工具使用 ( 重命名函数 | 添加注释 | 添加标签 / 跳转标签 | 代码跳转前进 / 后退 )

Android 逆向IDA 工具使用 ( 重命名函数 | 添加注释 | 添加标签 / 跳转标签 | 代码跳转前进 / 后退 )

为啥我的 LinkedHashMap 被错误地转换为 JSON 并保存在 SharedPreferences 中?