我主持了一个关于亚马逊网络服务的网站,由于某些原因,与我在localhost上本地运行相比,有些东西不起作用。
这些东西是
if (array_key_exists("error", $json))
功能和
file_get_contents
功能。
我已经注释掉了数组键存在的一部分并且解决了这个问题,至少在登录的那一部分,直到我到了一个显示苗条应用程序错误的视图文档页面
无法打开流:HTTP请求失败!找不到HTTP / 1.1 404
,问题在于viewdocspage.php文件,特别是这段代码:
<?php
$raw = file_get_contents("http://cosoft.us-east-1.elasticbeanstalk.com/cosoft/mywiki/api.php?action=query&list=allpages&format=json");
$pages_response = json_decode($raw, true);
$pages_array = $pages_response["query"]["allpages"];
$page_titles = [];
我查看并阅读了许多线程,问题在于file_get_contents,其中URL包含特殊字符,例如空格(我没有),因此需要使用urlencode(或rawurlencode ..)进行编码。 )
现在我尝试编码整个网址:
$raw = file_get_contents(urlencode("http://cosoft.us-east-1.elasticbeanstalk.com/cosoft/mywiki/api.php?action=query&list=allpages&format=json"));
但是这导致了这个错误: slim error
消息:file_get_contents(http%3A%2F%2Fcosoft.us-east-1.elasticbeanstalk.com%2Fcosoft%2Fmywiki%2Fapi.php%3Faction%3Dquery%26list%3Dallpages%26format%3Djson):无法打开流:没有这样的文件或目录
我认为这可能会发生,因为我读到并不是所有的URL都应该被这个编码包裹,但是我坚持的地方:我使用编码的哪个部分?关于这个错误,我唯一不断出现的特殊字符就是空格,但是我没有任何空格,所以它的其他内容我不知道它是什么......
感谢帮助,谢谢!
答案 0 :(得分:1)
您只需要对参数进行url_encode。假设你有一个值$value='My name is earl'
如果您想将此值作为参数传递到您的网址中
http://somesite.com/?name=$value
值为url_encoded的空格。因此,如果您将其编码为'http://somesite.com/?name='.urlencode($value)
,则在对其进行编码时,该值将变为My+name+is+earl
答案 1 :(得分:-1)
从URL读取资源可能受到服务器配置的限制。 http://php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen
你应该使用CURL。