【问题标题】: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 不运行您的脚本?

标签: php apache .htaccess configuration lamp


【解决方案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。
              猜你喜欢
              • 2011-11-13
              • 2011-05-24
              • 2014-04-02
              • 2014-12-03
              • 2015-12-19
              • 2013-04-29
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多