我正在使用PHP的函数file_get_contents()
来获取URL的内容,然后我通过变量处理标头$http_response_header
.
现在问题是某些URL需要将一些数据发布到URL(例如,登录页面).
我怎么做?
我意识到使用stream_context我可以做到这一点,但我并不完全清楚.
谢谢.
我一直在尝试从我在服务器上创建的PHP页面访问这个特定的REST服务.我将问题缩小到这两行.所以我的PHP页面如下所示:
<?php
$response = file_get_contents("https://maps.co.weber.ut.us/arcgis/rest/services/SDE_composite_locator/GeocodeServer/findAddressCandidates?Street=&SingleLine=3042+N+1050+W&outFields=*&outSR=102100&searchExtent=&f=json");
echo $response; ?>
Run Code Online (Sandbox Code Playgroud)
该页面在第2行死亡,并出现以下错误:
- 警告:file_get_contents():SSL操作失败,代码为1. OpenSSL错误消息:错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败...第2行的php
- 警告:file_get_contents():无法在第2行的... php中启用加密
- 警告:file_get_contents(
https://maps.co.weber.ut.us/arcgis/rest/services/SDE_composite_locator/GeocodeServer/findAddressCandidates?Street=&SingleLine=3042+N+1050+W&outFields=*&outSR=102100&searchExtent=&f=json
):无法打开流:第2行的... php操作失败
我们正在使用Gentoo服务器.我们最近升级到PHP 5.6版.升级后出现此问题.
我发现,当我一个地址替换REST服务一样https://www.google.com
; 我的页面工作正常.
在我之前的一次尝试中,我将“verify_peer”=>false
其作为参数传递给file_get_contents,如下所述: file_get_contents忽略verify_peer => false? 但就像作者所指出的那样; 它没有任何区别.
我问过我们的服务器管理员是否存在php.ini文件中的这些行:
他告诉我,因为我们在Gentoo上,openssl是在我们构建时编译的; 并且它没有在php.ini文件中设置.
我也证实这allow_url_fopen
是有效的.由于这个问题的专业性; 我没有找到很多帮助信息.有没有人遇到过这样的事情?谢谢.
我file_get_contents()
在循环中使用该方法调用一系列链接.每个链接可能需要15分钟以上才能处理.现在,我担心PHP是否file_get_contents()
有超时期限?
如果是,它将超时通话并转到下一个链接.如果没有事先完成,我不想打电话给下一个链接.
那么,请告诉我是否file_get_contents()
有超时期限.包含的文件file_get_contents()
设置set_time_limit()
为零(无限制).
访问REST API时,这两段代码有何不同?
$result = file_get_contents('http://api.bitly.com/v3/shorten?login=user&apiKey=key&longUrl=url');
Run Code Online (Sandbox Code Playgroud)
和
$ch = curl_init('http://api.bitly.com/v3/shorten?login=user&apiKey=key&longUrl=url');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
Run Code Online (Sandbox Code Playgroud)
从判断起,它们都产生相同的结果
print_r(json_decode($result))
Run Code Online (Sandbox Code Playgroud) 我正在设置信用卡处理,需要使用CURL的解决方法.当我使用测试服务器(没有调用SSL URL)时,以下代码工作正常,但现在当我在使用HTTPS的工作服务器上测试它时,它失败并显示错误消息"无法打开流".
function send($packet, $url) {
$ctx = stream_context_create(
array(
'http'=>array(
'header'=>"Content-type: application/x-www-form-urlencoded",
'method'=>'POST',
'content'=>$packet
)
)
);
return file_get_contents($url, 0, $ctx);
}
Run Code Online (Sandbox Code Playgroud) 我在从PHP代码调用url时遇到问题.我需要使用PHP代码中的查询字符串来调用服务.如果我在浏览器中键入url,它可以正常工作,但如果我使用file-get-contents()来进行调用,我会得到:
警告:file-get-contents(http:// ....)无法打开流:HTTP请求失败!HTTP/1.1 202接受于......
我使用的代码是:
$query=file_get_contents('http://###.##.##.##/mp/get?mpsrc=http://mybucket.s3.amazonaws.com/11111.mpg&mpaction=convert format=flv');
echo($query);
Run Code Online (Sandbox Code Playgroud)
就像我说 - 从浏览器调用,它工作正常.有什么建议?
我也尝试过另一个网址,例如:
$query=file_get_contents('http://www.youtube.com/watch?v=XiFrfeJ8dKM');
Run Code Online (Sandbox Code Playgroud)
这工作得很好......可能是我需要调用的网址中有第二个http://
吗?
我正在使用file_get_contents()来访问URL.
file_get_contents('http://somenotrealurl.com/notrealpage');
Run Code Online (Sandbox Code Playgroud)
如果URL不是真实的,则返回此错误消息.如何才能优雅地将其置于错误状态,以便我知道页面不存在并相应地执行操作而不显示此错误消息?
file_get_contents('http://somenotrealurl.com/notrealpage')
[function.file-get-contents]:
failed to open stream: HTTP request failed! HTTP/1.0 404 Not Found
in myphppage.php on line 3
Run Code Online (Sandbox Code Playgroud)
例如在zend你可以说: if ($request->isSuccessful())
$client = New Zend_Http_Client();
$client->setUri('http://someurl.com/somepage');
$request = $client->request();
if ($request->isSuccessful()) {
//do stuff with the result
}
Run Code Online (Sandbox Code Playgroud) 我正在从外部服务器加载HTML.HTML标记具有UTF-8编码,并包含诸如ľ,š,č,ť,ž等字符.当我使用file_get_contents()加载HTML时,如下所示:
$html = file_get_contents('http://example.com/foreign.html');
Run Code Online (Sandbox Code Playgroud)
它弄乱了UTF-8字符并加载Å,¾,¤和类似的废话而不是正确的UTF-8字符.
我怎么解决这个问题?
更新:
我尝试将HTML保存到文件并使用UTF-8编码输出.两者都不起作用,这意味着file_get_contents()已经返回损坏的HTML.
UPDATE2:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="sk" lang="sk">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Language" content="sk" />
<title>Test</title>
</head>
<body>
<?php
$html = file_get_contents('http://example.com');
echo htmlentities($html);
?>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) $xml_file = file_get_contents(SITE_PATH . 'cms/data.php');
Run Code Online (Sandbox Code Playgroud)
问题是服务器禁用了URL文件访问.我无法启用它,它是托管的东西.
所以问题是这个.该data.php
文件生成xml代码.
如何在不执行上述方法的情况下执行此操作并获取xml数据?
可能吗?
如何在php中显示使用file_get_contents检索的图像?
我需要修改标题,只是回应它或什么?
谢谢!