gpt4 book ai didi

PHP: "file_get_contents()"从经过内容验证的 URL 返回 NULL

转载 作者:可可西里 更新时间:2023-11-01 13:50:42 26 4
gpt4 key购买 nike

我敢打赌它最终会变得很简单......但我可以用一只手来发现它。

问题:
当我尝试通过 file_get_contents() 获取特定本地 URL 的内容时,它返回为空字符串 ''(长度 = 0)。

我尝试过的:

    $url = 'http://localhost/bbq/index.php/company/get/id/2131/return/json';
$results = file_get_contents($url);
echo'<pre>Results:<br />',var_export($results),'</pre>';

当直接访问 http://localhost/bbq/index.php/company/get/id/2131/return/json 时,一切都很漂亮:{"id":"2131","value":"Acme Anvil Corp."

为了检查自己,我尝试使用 $url = 'http://www.google.com',它按预期工作,所以我尝试了单独的本地 uri,http://localhost/?phpinfo=1,它也能正常工作

问题:
我错过了什么???


[附加信息]
allow_url_fopen 开启

可能刚刚找到了东西
作为 CODEIGNITER 项目中的一项安全措施, Controller 脚本的第一行具有:

    if ( !defined('BASEPATH')) exit('No direct script access allowed');

将其注释掉并没有提供任何改进,但我认为它仍然值得一提。

此外,这里还有 HTTP 响应 header 的转储。也许有人能看到里面的东西。对我来说,这一切似乎都很简单,但我真的不知道我应该寻找什么。

array (size=13)
0 => string 'HTTP/1.1 200 OK' (length=15)
1 => string 'Date: Thu, 27 Dec 2012 19:58:47 GMT' (length=35)
2 => string 'Server: Apache/2.4.2 (Win64) PHP/5.4.3' (length=38)
3 => string 'X-Powered-By: PHP/5.4.3' (length=23)
4 => string 'Set-Cookie: csrf_cookie_name=4ae46f9a7e612ae22a080a4e88bd349c; expires=Thu, 27-Dec-2012 21:58:47 GMT; path=/' (length=108)
5 => string 'Set-Cookie: PHPSESSID=ah70p0ldl5qptcauei1t8ihud3; path=/' (length=56)
6 => string 'Expires: Thu, 19 Nov 1981 08:52:00 GMT' (length=38)
7 => string 'Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0' (length=77)
8 => string 'Pragma: no-cache' (length=16)
9 => string 'Refresh: 0;url=http://localhost/bbq/index.php/index.php/user/login' (length=66)
10 => string 'Content-Length: 0' (length=17)
11 => string 'Connection: close' (length=17)
12 => string 'Content-Type: text/html' (length=23)

[/附加信息]

顺便说一句,我正在运行:

  • Win7 64 位上的 WAMPSERVER
  • Apache 2.4.2
  • PHP 5.4.3
  • 代码点火器 2.1.2

最佳答案

现在开始调试:

# we want text output for debugging. Either this works or you need to look into
# source in your browser (or even better, debug with the `curl` commandline client.)
header('Content-Type: text/plain');

# For quick and dirty debugging - start to tell about if something is worth
# to warn or notice about. (do logging in production)
error_reporting(~0); ini_set('display_errors', 1);

$url = 'http://localhost/bbq/company/get/id/2131/return/json';
$results = file_get_contents($url);
var_dump($http_response_header, $results);

# hard exit, flush all (potential) buffers.
die();

由于 var_dump,对文件的请求现在必须至少返回一些文本输出。您还可以在 header 调用下方的开头添加一些标记输出,因此很明显脚本已被调用并开始运行。

然而,更好的变体是使用单步调试器并创建带断点的调试 session 。我推荐 Xdebug。

关于PHP: "file_get_contents()"从经过内容验证的 URL 返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14059923/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com