file_get_contents 在同一域上执行 http 请求

发布于 2025-01-06 12:37:44 字数 445 浏览 0 评论 0原文

我正在尝试使用 file_get_contents 检索浏览器从同一域上的另一个文件接收的输出。 我已经转移到另一台服务器,现在它总是超时。 下面是我正在尝试做的事情的示例。

index.php

<?php
echo file_get_contents('http://'.$_SERVER['SERVER_NAME'].'/sample.php');
?>

sample.php

<?php
echo 'test';
?>

你知道这个问题的原因是什么吗?

编辑 我们的服务器管理器提到了有关 apache 未响应本地主机的信息,这是否引起了我们的注意?

谢谢

I'm trying to use file_get_contents to retrieve the output a browser would receive from another file on the same domain.
I've moved to another server and now it always gets a timeout.
Below is a sample of what I'm trying to do.

index.php

<?php
echo file_get_contents('http://'.$_SERVER['SERVER_NAME'].'/sample.php');
?>

sample.php

<?php
echo 'test';
?>

Any ideas what might be the cause of this problem?

EDIT
Our server manager mentioned something about apache not responding to localhost, does that perhaps ring a bell?

Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

-残月青衣踏尘吟 2025-01-13 12:37:44

您确定该 URL 确实正确吗?您是否尝试过使用 $_SERVER ['HTTP_HOST'] 来代替?在运行 PHP 的计算机上,生成的 URL 中的主机会解析为什么?您的 Web 服务器(Apache?)是否已设置监听本地主机接口?

Are you sure the URL is actually correct? Have you tried using $_SERVER ['HTTP_HOST'] instead? On the machine that runs PHP, what does the host from the generated URL resolve to? Has your web server (Apache?) been set up listen on the localhost interface?

悟红尘 2025-01-13 12:37:44

您可以使用 fsockopen 执行相同的操作,并且可以指定超时

<?php
$fp = fsockopen($_SERVER['SERVER_NAME'], 80, $errno, $errstr, 30/*timeout*/);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    $out = "GET /sample.php HTTP/1.1\r\n";
    $out .= "Host: www.example.com\r\n";
    $out .= "Connection: Close\r\n\r\n";
    fwrite($fp, $out);
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
}
?>

查看文档以获取更多详细信息

http://php.net/manual/en/function.fsockopen.php

You can use fsockopen to do the same , along with you can specify the timeout

<?php
$fp = fsockopen($_SERVER['SERVER_NAME'], 80, $errno, $errstr, 30/*timeout*/);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    $out = "GET /sample.php HTTP/1.1\r\n";
    $out .= "Host: www.example.com\r\n";
    $out .= "Connection: Close\r\n\r\n";
    fwrite($fp, $out);
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
}
?>

Check documentation for more details

http://php.net/manual/en/function.fsockopen.php

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文