2016-07-10 3 views
-3

私はamazon Webサービスで作業していたWebサイトをホストしていましたが、何らかの理由でlocalhostでローカルに実行したときと比較して動作しないものがありました。それらのもののこのURLはどこでurlencodingが必要ですか?

if (array_key_exists("error", $json)) 

機能と

file_get_contents関数です。

アイブ氏は、配列のキーは、一部の存在をコメントアウトし、私はスリムなアプリケーションエラーが

failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found

と表示するビューの文書のページに到達するまでそれは、少なくともログインのその部分のために、問題を解決そのための課題は、特に、このコード、viewdocspage.phpファイルにある:(私は見て、問題がURLにスペースなどの特殊文字が含まれているのfile_get_contentsであること、多くのスレッドをよく読んで

<?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 = []; 

ました私のdoesntは持っている)そしてそう必要(?またはrawurlencode ...)でurlencodeを使用して、符号化されるべき

今IVEは、このような全体のURLをコード試してみました:

$raw = file_get_contents(urlencode("http://cosoft.us-east-1.elasticbeanstalk.com/cosoft/mywiki/api.php?action=query&list=allpages&format=json")); 

をそれは、このエラーが発生しました: slim error

Message: file_get_contents(http%3A%2F%2Fcosoft.us-east-1.elasticbeanstalk.com%2Fcosoft%2Fmywiki%2Fapi.php%3Faction%3Dquery%26list%3Dallpages%26format%3Djson): failed to open stream: No such file or directory


私は、すべてのURLがこのエンコーディングでラップされているわけではありませんが、私はどこにいるのですか?のエンコーディング?私はこのエラーに関して間違っている唯一の特殊文字はスペースですが、スペースがないので、それが何であるか分かりません。

ありがとう、ありがとう!

+0

great。可能な限り細かく整理されたユニークな質問でも、私は説明なしでdownvoteを得る。 smh – masterofcatastrophe

+0

wow ... 2もっとdownvotes。誰かが説明できますか? – masterofcatastrophe

+0

私は、あなたが馬を見ている馬を見下ろしている間に、あなたが蹄鉄の音を聞いたので、あなたがゼブラを探していることが原因でダウンボトムが起こっている可能性があると疑っています: 'http://cosoft.us-east-1.elasticbeanstalk.com/cosoft/ mywiki/api.php?action = query&list = allpages&format = json'は実際に404 Not Foundを返します。あなたは無効なURLを持っているか、IP制限を受けているか、信用証明書を送信していませんが、これはURLエンコードの問題ではありません。エンコーディングを必要とするURLには何もありません(これは一般に?the_keys = and_values_in&ur = query_string'では使用されますが、?=&それらを区切る)。 –

答えて

1

パラメータをurl_encodeするだけで済みます。あなたが値を持っていたとします。$value='My name is earl' URLのパラメータとしてこの値を渡したい場合は、値にurl_encodedのスペースがあります。 http://somesite.com/?name=$valueしたがって、コードを'http://somesite.com/?name='.urlencode($value)としてエンコードすると、コード化されたときに値はMy+name+is+earl

+0

そのURLにはどのようなパラメータがあり、どこでURLエンコードを行うべきですか?私はスペースのためにそれを使用する方法を知っているので、私はスペースを持っていないので、どの特殊文字が私の問題でそれを必要としているのかわかりません。 – masterofcatastrophe

+1

エンコーディングが必要な特殊文字を使わないでハードコードされたURLを使用しています。 url_encodeなしであなたのURLをそのまま残してください。 404エラーが表示されるのは、ページが存在しないためです。私はちょうど私のブラウザでそれを訪問し、404エラーを受けた – ksealey

+0

@masterofcatastrophe:ストリームを開くことに失敗しました:そのようなファイルやディレクトリはありません – Sbpro

-1

になります。サーバーの構成によってURLのリソースが制限される場合があります。 http://php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen

これにはCURLを使用する必要があります。

+0

私はCURLも提案されているソリューションを見ていますが、単純にurlencodeを使用するのは複雑です。私は実際にここでCURLを実装する方法を知っていません。また、localhostサーバ上で実行しているので、fopenはすでに有効になっています。問題はあのAWSだけです。 – masterofcatastrophe

+0

これは問題ではありません。エラーはまったく異なります。コードを読んだ場合、URLが明らかに変更されていることがわかります。そのため、URLが存在しません。 – Brad

+0

パラメータを適切に管理するためにCURLを使用することもできます。 また、url fopenは一般的に無効になっているため、ある時点でこれに問題があります – ehwas

関連する問題