【问题标题】:Is it possible to configure the "PHP built-in web server" to process PHP codes that are internal to an HTML page?是否可以配置“PHP 内置 Web 服务器”来处理 HTML 页面内部的 PHP 代码?
【发布时间】:2022-01-04 05:01:39
【问题描述】:

由于 PHP 内置 web 服务器不考虑“.htaccess”文件 “AddType application/x-httpd-php .php .htm .html”(或类似的东西),我如何配置它来处理 PHP 代码,嵌入在其花括号内的 HTML 中( )?

非常感谢。

【问题讨论】:

  • 只需将所有相关文件重命名为.php

标签: php html web httpserver built-in


【解决方案1】:

使用 LAMP 堆栈会容易得多。不建议使用 PHP 内置的 web 服务器进行生产。您可以在PHP manual 中找到以下警告

"警告此网络服务器旨在帮助应用程序开发。它也可能 可用于测试目的或运行的应用程序演示 受控环境。它并非旨在成为功能齐全的 Web 服务器。它 不应在公共网络上使用。”

您不能在 HTML 文件中使用 PHP。或者至少没有任何主要配置。但是,您可以在 PHP 文件中编写 HTML。

【讨论】:

  • 感谢您的 cmets 和建议,我同意所有这些,但在这种特定情况下,如果可能,我需要内置服务器来处理 HTML 中的“PHP”代码页。感激不尽!
【解决方案2】:

将您的 HTML 文件重命名为具有“.php”扩展名是最有意义的。但是,如果你真的不想这样做,或者不能这样做,有办法。

您可以使用路由器脚本(请参阅:https://www.php.net/manual/en/features.commandline.webserver.php)在其中将文件作为 PHP 处理。例如创建一个名为 router.php 的文件:

<?php
$extensions = array("html", "htm");

$path = parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH);
$ext = pathinfo($path, PATHINFO_EXTENSION);

if (in_array($ext, $extensions)) {
    $file = __DIR__ . $path;
    $data = file_get_contents($file);
    return eval('?> ' . $data); // this is where the data is processed. 
}
return false; // return false if the file does not have a .html or .htm extension.

然后使用此文件运行您的内置 Web 服务器:php -S localhost:8000 router.php

接下来,转到您的浏览器并访问一个 HTML 文件,例如 index.html on:localhost:8000/index.html。如果您的 HTML 文件包含任何 PHP 代码,现在将由您的 router.php 中的 eval() 函数执行。

小心:这不是你应该在生产中使用的东西,因为这可能会造成严重的安全威胁!

【讨论】:

  • 感谢您的建议,我同意所有建议!感谢您的代码,它比我尝试的更优雅和简化,并且它可以工作,但如果有可能,我希望它通过服务器配置来实现。虽然我认为这根本不可能!
  • 如果没有像我发布的这样的额外脚本,恐怕你无法做到这一点。显然在 Apache 中你有这个处理程序的设置,但是对于内置的 PHP 服务器,我不认为有这个选项。您可以通过带有 php -S localhost:8000 -c php.ini 的文件 (php.ini) 传递配置,但我不认为您可以在此文件中设置一个选项来获得您想要的结果。
  • 我明白了,我很抱歉...但是在 php.ini 中必须进行哪些配置?非常感谢!
  • 见:php.net/manual/en/configuration.file.php。但是,就像我说的那样,我很确定没有办法将其设置为像处理 PHP 文件一样处理 HTML 文件。
  • Dirk J. Faber,感谢您的支持!现在我确信这是不可能的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-13
  • 1970-01-01
  • 2021-11-21
  • 2017-03-04
  • 1970-01-01
相关资源
最近更新 更多