19

このサイトは数か月間稼働しており、正常に機能しています。URL のデータから請求書を作成する PHP ページがあります (たとえば、viewinvoice.php?id=250 はレコード 250 に基づいて請求書を作成します)。このページは Web ブラウザからアクセスでき、正常に動作します。

完全に別のページ (つまり、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 を外部 URL (つまりhttp://www.google.com/ ) に変更してみましたが、ページは問題なく読み込まれます。Google のホームページを取得します。ただし、同じドメインにあるページは読み込まれません。これが起こる理由はありますか?

私はサーバー管理者ではありませんが、サーバーへのルート アクセス権があります。最近設定を変更していませんが、サーバー管理者が apache や php のバージョンを上げたのではないでしょうか?

いずれにせよ、これを再び機能させるために変更できる設定はありますか?

PS外部サーバー(別のドメイン)からこの正確な呼び出しを試みたところ、問題なく動作しました。

4

3 に答える 3

55

curl の実行後、次のように入力します。

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

curl の実行中に何が失敗したかがわかります。

詳細: curl_getinfo curl_errno curl_error

于 2012-09-10T20:45:01.247 に答える
2

実行後、この変数を入れてエラーをテストします

echo "<pre>";
var_dump( curl_getinfo($ch) ) . '<br/>';
echo curl_errno($ch) . '<br/>';
echo curl_error($ch) . '<br/>';
于 2017-04-19T03:34:15.780 に答える