【问题标题】:Lighttpd escapes <?php ?> in served html files?Lighttpd 在提供的 html 文件中转义 <?php ?>?
【发布时间】:2011-08-17 12:23:28
【问题描述】:

我正在使用非我配置的嵌入式系统中的 lighttpd 服务器。我使用 Google Chrome 查看 HTML 文件的源代码。 我不知道出了什么问题,但是当我请求以下简单文件时:

注意:文件扩展名为.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
Hello world!
<?php echo "PHP commands"?>
</body>
</html>

它将以下文件提供给我的浏览器:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
Hello world!
<!--?php echo "PHP commands"?-->
</body>
</html>

换句话说,它会找出禁用它们的 php 命令!为什么?我该如何解决?在配置文件中找不到任何错误。

即使它没有保存在扩展名为 .php 的文件中,我希望 lighttpd 忽略 html 中的 php 命令。我知道它不是一个有效的 HTML,但我希望它保持原样。

【问题讨论】:

  • 是否在服务器上安装了 PHP,并且通过 FastCGI 或类似的方式正确配置了 lighttpd 以使用它?
  • 是的,它已安装并且 fastcgi 配置正确。

标签: php lighttpd


【解决方案1】:

我的猜测是:

  1. 嵌入式系统没有可用的 PHP 解释器,或者没有为您正在使用的文件扩展名进行配置。

  2. 您正在通过浏览器工具(Firebug 或其他工具)检查 HTML 代码,该工具不显示 原始 HTML,而是显示 生成的 HTML。由于&lt;?php ... ?&gt; 不是有效的 HTML 标记,因此它被转换为(有效的)注释。

【讨论】:

  • 文件保存为 HTML 而不是 PHP。当我将它保存为 PHP 时,它工作正常。对于这个特定的项目,我需要将其保存为 HTML。问题是:我怎样才能强制 lighttpd 保留其中包含 PHP 命令的文件不受影响?
  • 您的第二个猜测是正确的。我正在使用 Chrome。当我使用 IE8 时,它向我展示了原始源代码。
【解决方案2】:

这很痛苦,我发现唯一的“修复”就是为您的文件提供 .php 的扩展名,而很多人并不热衷于这样做..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    • 2023-03-11
    • 2014-12-30
    • 2012-07-17
    • 2015-04-27
    相关资源
    最近更新 更多