如何从命令行调用 php 或 apache 来呈现页面?

如何从命令行调用 php 或 apache 来呈现页面?

我正在运行 apache2 作为 Web 服务器。我有一个本地文件 example.php,我需要看到它由 apache 呈现。最简单的方法是将文件移动或链接到 apache 作为我的网站的一部分公开的文件夹,然后我就可以使用 curl 或 wget 获取页面。

但是,在我的情况下这是不可能的 - 我无法写入 apache 正在查找的目录,这意味着我无法通过通常的端口 80 方法访问它。有没有办法直接调用 apache,给它一个 php 文件来生成结果?

我正在寻找类似的命令$ apache ./example.php > output.html,这可能吗?

我问的是 apache,因为虽然我实际上只需要它来运行 php,但是在这种情况下 php-cli 是不可用的 - apache php 和 cli php 可以访问不同的内存区域,我需要结果与通过 apache 返回的结果相匹配。

答案1

您可以将其作为新的虚拟主机添加到 Apache 吗?

让某个东西像网站一样运行的最简单方法是将其视为网站。如果您可以将其作为本地网站托管(例如仅在 127.0.0.1 接口上)并使用 wget,这可能是处理此问题最便宜、最干净的方法。

php使用命令将其作为脚本运行

您可以运行php example.php > output.html,它应该适用于大多数简单脚本。

请注意,这将使用 php-cli 配置,而不是mod_phpphp-fpmphp-cgi等配置。如果您的设置很奇怪,这可能很重要。

编辑:我看见这个问题昨天的那个可能有用。它针对的是 wordpress,但同样的逻辑应该适用于大多数需要伪造真实请求的情况。你设置了一堆 PHP$_SERVER变量,这样你的脚本(不管是什么)就可以正确执行……然后包含你的脚本。

使用 PHP 内置服务器(需要 PHP 5.4+)

如果你cd进入目录并运行,php -S localhost:9000则会在端口 9000 上启动一个本地服务器,它将托管你的网站。这是仅有的用于测试此类事物永远不应该接触互联网

这使您可以进行传统的wget查找:

wget -O output.html http://localhost:9000/example.php

从我之前(现已删除)的回答来看,如果您发现自己需要欺骗域名,wget将允许您传递主机。如果 PHP 正在查找服务器变量,这将非常方便。

wget -O output.html --header "Host: example.com" http://localhost:9000/example.php

相关内容