2017-05-24 12 views
0

私はCURLというコードを呼び出してURLを呼び出します(URLは電子メールを送信します)。 ブラウザからURLを呼び出すと動作しますが、curl PHPコードから実行すると動作しません。httpサーバのCURLエラー "ホストに接続できませんでした"

また、私のhttps SSLプロダクションサーバーでは正確に同じカールコードはでは動作しますが、HTTP開発サーバーでは動作しません。

私の開発用httpサーバーには「はホストに接続できませんでした」というエラーが表示されます。

これはコードです:

$ch = curl_init(); 

$requestedUrl = http://XXX.XXX.XX.XX/myproject/index.php?entryPoint=viewReport&record=.....etc.. 

curl_setopt($ch, CURLOPT_URL, $requestedUrl); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

$data = curl_exec($ch); 
if ($data === FALSE) { 
    $GLOBALS['log']->fatal("error = " . print_r(curL_error($ch),true)); 
} 

curl_close($ch); 

私はこの問題であり、すべての記事をお読みください。 私はプロキシの背後にいるかどうかわからないし、私は背後にある場合、プロキシのIPを取得する方法を知らない。私はcurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

を追加しようとしている

は、追加しようとした:

curl_setopt($ch, CURLOPT_PROXYTYPE, 'HTTP'); 
curl_setopt($ch, CURLOPT_PROXY, "http://XXX.XXX.XX.XX"); //your proxy url 
curl_setopt($ch, CURLOPT_PROXYPORT, "80"); // your proxy port number 

は、(任意のHTTPアドレスにオープンしている)、ファイアウォールでポート1080をopeiningみました。

私は私を助けてください:)

+0

あなたは、CLIからそのURL(のindex.phpを)wgetのことはできますか? –

+0

デニス、ありがとう、私は開発のLinuxサーバーコンソールからwgetと呼ばれる。私は "wget http://XX.XX.XX.XX/myproject/index.php"と呼んでいます。それはXX.XXX.XX.XXに接続しています:80 ...失敗:接続がタイムアウトしました。どういう意味ですか? – Rodniko

+0

これは、あなたのサーバーがお互いに "見えない"ことを意味します。これはシステム管理ドメインに該当し、解決方法がわかりません。 あなたのdevサーバーはインターネットにアクセスする必要があります、そして、それは今それを持っていないようです... –

答えて

0

私は数日戻って、同じ問題に直面していた、アイデアの出です。私がしたことは、ホストファイルにipを追加することです。私はこれを説明してみましょう:

  1. あなたのdevのサーバーがabc.comであり、あなたのカールURLがxyz.comの
  2. のget IPがxyz.com/...されて(私が使用ピングxyz.com)
  3. このIPをabc.comサーバーのホストファイルに追加する127.0.0.1 xyz.com

私の場合、abc.comは専用サーバーでホストされていたので、この変更を加えることができました。私は共有ホスティングのやり方を知らない。サーバーの人やホスティングプロバイダが役立つかもしれません。

+0

ありがとうございますが、私は理解していません...プロジェクトのコードは、カール要求では、開発サーバー自体に、私は開発サーバー自体と同じIPを呼び出します、どうしてカールは別のIPを呼び出すことができますか?それが同じサーバー(localhost)の場合、なぜpingを行う必要がありますか? – Rodniko

関連する問題