0

あるサーバーから別のサーバーにデータをまとめる単純な API を作成しました。$_GETすべてのデータが GET データとして URL に追加される、非常に単純なベースの API です。

だから私は次のようなものを手に入れます: http://example.com/api.php?param1=afdsa&param2=TTTT&....など

それを呼び出すために、私はfile_get_contents($url); まず最初に使用します-返信の内容は本当に必要ありません。URL に「触れる」だけで、アクションが開始されます。

ホスティング (共有、justhost) に問題があり、VPS に移行しました。API呼び出しでタイムアウトが発生し始めました。Apacheのerror.logを確認したところ、次のことがわかりました。

"failed to open stream: File name too long in ..."

実際、$url文字列は約 450 文字です。

問題は、ファイル長の設定をどこで変更するかです。私のコンピュータは問題もエラーもなく同じ文字列を取得するため、ハード ドライブのファイル システムと同じではありません。また、共有ホスティングでは、その URL に問題はありませんでした。

VPS は、PHP バージョン 5.3.2-1ubuntu4.9 で ubuntu 10.04 lts を実行します。

2日間座っていたので、助けてくれてありがとう

解決した

問題がどこにあるかを知っていると思っているのに、そうではない場合はどうですか?まあ-それが問題でした。私はAPIを書き直したので、それが行うことはすべて、print_r($_GET);あなたが知っていることだけです-それはうまくいきました. そこで、行を 1 行ずつ追加し始めたところ、スクリプトを積み重ねたのは php メール関数であることがわかりました。なんで?わかりませんが、メールの設定が間違っているのかもしれませんが、メールをコメントアウトすると、すべて正常に動作します。

私の「file to long」エラーはまだ説明されていませんが、気にしないでください。皆様のおかげで

4

2 に答える 2

0

URIが長すぎるようです。

関連:さまざまなブラウザでのURLの最大長はどれくらいですか?

CURLを使用して変数をPOSTすることを検討してくださいapi.php

于 2011-05-26T13:16:37.090 に答える
0

あなたの問題ではなく、file_get_contentsファイルfopenを作成しようとしているまたは他の関数にあります。それはキャッシュシステムである可能性があります-コードなしでは言えません。つまり、問題は URL の長さではなく、ファイル名の長さだけです。
failed to open stream- ファイル ハンドラからのエラー メッセージです。
URL の長さに制限はなく、サーバー (Apache など) によって制限されていても、エラーとして警告されません。

于 2011-05-26T13:20:59.723 に答える