2012-09-10 3 views
12

このサイトは数ヶ月前から稼働しており、正常に動作しています。 URLのデータから請求書を作成するPHPページがあります(たとえば、viewinvoice.php?id = 250はレコード250に基づいて請求書を作成します)。このページはウェブブラウザからアクセスでき、正常に動作します。ローカルファイルにアクセスしようとすると、curlがfalseを返す原因は何ですか?

完全に異なるページ(つまり、test.php)で、私はcURLを介してそのファイルにアクセスしようとしています。しかし、私は呼び出しを行いvar_dump結果、私はbool(false)を取得します。

はここでcURLの呼び出しを行う機能です。

function file_get_contents_curl($url) { 
$ch = curl_init(); 

curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_URL, $url); 

$data = curl_exec($ch); 
curl_close($ch); 

return $data; 
} 

HOMEは、完全なURL(例えばhttp://www.example.com/)を示す定数です。

$invoice_contents = file_get_contents_curl(HOME.'viewinvoice.php?id=242'); 
echo $invoice_contents; 
var_dump($invoice_contents); 

私は、外部URL(すなわちhttp://www.google.com/)とうまくページがロードするためのURLを変更しようとしました。私はGoogleのホームページを取得します。同じドメインにあるページは読み込まれません。これが起こる理由はありますか?

私はサーバー管理者ではありませんが、サーバーへのルートアクセス権を持っています。私は最近設定を変更していないが、サーバー管理者がApacheまたはPHPのバージョンをアップグレードしている可能性がありますか?

いずれにしても、この作業を再度行うために変更できる設定はありますか?

P.S.私はちょうど外部サーバー(別のドメイン)からこの正確な呼び出しをしようとしたとうまく動作します。あなたのカールの実行中に失敗したか見ます

echo curl_getinfo($ch) . '<br/>'; 
echo curl_errno($ch) . '<br/>'; 
echo curl_error($ch) . '<br/>'; 

:あなたのカールを実行した後

答えて

36

は、このようなものを置きます。

さらに詳しい情報:curl_getinfocurl_errnocurl_error

+1

あなたのエラーをテストするには、この変数を入れた後、私はちょうどcurl_close($ chを)前にこれらの行を追加し、要求についての詳細を見ることができました。私は間違いなくこのアプローチを将来使用する予定です。残念ながら、私はこれを試してみる前に問題を解決したので、エラーはありませんでした。このサイトは以前と同じように動作しました。私はそれがまだ壊れていたと思うとは思っていませんでしたが、何が間違っていたかわからないので...私はそれが欲しいと思います。もう一度やり直したら、この情報を必ず使用します。 – codescribblr

2

実行が

echo "<pre>"; 
var_dump(curl_getinfo($ch)) . '<br/>'; 
echo curl_errno($ch) . '<br/>'; 
echo curl_error($ch) . '<br/>';