在同一服务器上获取php脚本的生成html内容

在同一服务器上获取php脚本的生成html内容,php,Php,我有一个php页面,它根据解析的查询字符串将html输出到浏览器。我遇到的问题是,我需要通过php动态检索此html源代码 以下代码将不起作用,因为它试图解析绝对路径,因为它位于同一服务器上: $url = 'http://example.com/myScript.php'; $html = file_get_contents($url); 如果我手动设置绝对路径,它只会以文本形式返回php内容(不像浏览器那样执行): 然后我对它进行了研究,发现使用ob\u get\u contents是可行

我有一个php页面,它根据解析的查询字符串将html输出到浏览器。我遇到的问题是,我需要通过php动态检索此html源代码

以下代码将不起作用,因为它试图解析绝对路径,因为它位于同一服务器上:

$url = 'http://example.com/myScript.php';
$html = file_get_contents($url);
如果我手动设置绝对路径,它只会以文本形式返回php内容(不像浏览器那样执行):

然后我对它进行了研究,发现使用
ob\u get\u contents
是可行的。下面的代码按预期工作,执行脚本并返回html输出

$url = '/dir1/dir2/dir3/dir4/myScript.php';
ob_start();
include($url);
$html = ob_get_contents();
ob_end_clean();
上述解决方案的问题是,只要我将查询字符串放在末尾,它就会失败。我认为这是因为它将查询字符串视为文件名的一部分。

使用PHPs

使用PHP



如果在配置中被阻止,第一个示例应该可以工作,或者抛出一个特定的错误,但不确定您实际观察到了什么。作为替代方案,您可以看看php的
cURL
扩展:看看这个@arkascha,域路径不会在内部解析,只有绝对路径。谢谢。@Thu谢谢,对于外部域,这很容易。这是内部问题。@steve抱歉,但那不是真的。当然,主机名将在任何具有工作名称解析的系统上解析。显然,必须在域名系统(DNS)中设置域的正确条目。这很可能是您案例中的问题。但这不是php的事情,您必须配置名称解析!这当然是正确的方法。不要试图用有问题的解决方法来回避这个问题。第一个示例应该可以工作,或者如果在配置中被阻止,就会抛出一个特定的错误,但不确定您实际观察到了什么。作为替代方案,您可以看看php的
cURL
扩展:看看这个@arkascha,域路径不会在内部解析,只有绝对路径。谢谢。@Thu谢谢,对于外部域,这很容易。这是内部问题。@steve抱歉,但那不是真的。当然,主机名将在任何具有工作名称解析的系统上解析。显然,必须在域名系统(DNS)中设置域的正确条目。这很可能是您案例中的问题。但这不是php的事情,您必须配置名称解析!这当然是正确的方法。不要试图用有问题的解决方法来解决这个问题。谢谢,但遇到的问题与使用
文件\u get\u内容时完全相同。域路径不会在内部解析,只能解析为绝对路径。谢谢。与我的问题中的
ob\u get\u contents
存在相同的问题,其中一个查询字符串导致它找不到文件。您所说的确切查询字符串是什么?例如,来自$\u GET?的:
“/dir1/dir2/dir3/dir4/myScript.php”
可以正常工作。但是,
“/dir1/dir2/dir3/dir4/myScript.php?foo=bar”
找不到文件。当然,它失败了,因为它是文件路径而不是URL。现在尝试代码,只需在包含的文件中使用所需的查询标记更改第5行。谢谢,但遇到的问题与使用
文件\u get\u contents
时完全相同。域路径不会在内部解析,只能解析为绝对路径。谢谢。与我的问题中的
ob\u get\u contents
存在相同的问题,其中一个查询字符串导致它找不到文件。您所说的确切查询字符串是什么?例如,来自$\u GET?的:
“/dir1/dir2/dir3/dir4/myScript.php”
可以正常工作。但是,
“/dir1/dir2/dir3/dir4/myScript.php?foo=bar”
找不到文件。当然,它失败了,因为它是文件路径而不是URL。现在尝试代码,只需在包含的文件中使用所需的查询标记更改第5行。
$url = '/dir1/dir2/dir3/dir4/myScript.php';
ob_start();
include($url);
$html = ob_get_contents();
ob_end_clean();
<?php
    ob_start();

    $original_get = $_GET;
    $_GET = ["query" => "tags", "you" => "need", "in" => "file.php"];
    $file = "file.php";

    include($file);

    $_GET = $original_get;

    $content = ob_get_contents();
    ob_clean();

    echo $content;