2016-10-26 12 views
0

私はlaravelの小さなサイトに取り組んでおり、webservicesからいくつかのデータを取得してlocalhostで使いました。それらのすべてが要求を送信することはできません。cURLがサーバではなくlocalhostで動作しています

サーバー1 = http://testing2.vire-news.com/(ホスト:GoDaddyは)

サーバー2 = http://testing.asmani.pk/:あなたはそれはあなたがWebサービスから生じる与えることはありません検索ヒットした場合(ホストHostgatorの)

。私はstackoverflowの上のすべてを検索しました

CURLOPT_POSTのすべての種類、CURLOPT_FOLLOWLOCATIONなどを入れて、何もサーバー1に

を働かない、それは「エラーに

を与えるemexonline.comポート3000への接続に失敗しました:接続拒否」

サーバー2では接続を維持してタイムアウトします。 私はlaravel環境からテストするために同じコードの簡単なPHPファイルを作った。

注:私はfacebookとtwitter APIのような他のカールウェブサービスをテストしました。これらはすべてこれらのサーバーでうまく動作しており、ウェブサービスプロバイダに連絡しています。彼らのウェブサービスは何の問題もありません。

ここにコード私はXMLデータからユーザー名とパスワードを削除しました。 すべてがlocalhost上で正常に動作し、サーバー上でエラーが発生し、他のすべての機能は正常に動作しますが、Webサービスだけが接続していません。

$xml_data = '<?xml version="1.0" encoding="utf-8"?> 
     <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> 
      <soap12:Body> 
      <SearchPart xmlns="http://emexonline.com:3000/MaximaWS/"> 
       <Customer> 
       <UserName>username</UserName> 
       <Password>password</Password> 
       <SubCustomerId>0</SubCustomerId> 
       <CustomerId>20879</CustomerId> 
       </Customer> 
       <DetailNum>'.$Request->search.'</DetailNum> 
       <ShowSubsts>0</ShowSubsts> 
      </SearchPart> 
      </soap12:Body> 
     </soap12:Envelope> 
     '; 
     $headers = array(
     "POST /MaximaWS/Service.asmx HTTP/1.1", 
     "Host: emexonline.com", 
     "Content-Type: application/soap+xml; charset=utf-8", 
     "SOAPAction: \"http://dpd.com/common/service/LoginService/2.0/getAuth\"", 
     "Content-Length: ".strlen($xml_data) 
     ); 

     $url = 'http://emexonline.com:3000/MaximaWS/Service.asmx'; 
     $curll = curl_init(); 
     curl_setopt($curll, CURLOPT_URL,$url); 
     curl_setopt($curll, CURLOPT_RETURNTRANSFER,1); 
     curl_setopt($curll, CURLOPT_TIMEOUT, 30); 
     curl_setopt($curll, CURLOPT_HTTPHEADER, $headers); 
     curl_setopt($curll, CURLOPT_SSL_VERIFYPEER, FALSE); 
     curl_setopt($curll, CURLOPT_POSTFIELDS, $xml_data); 
     $reply = curl_exec($curll); 

まあcurl_errno($ch)curl_error($ch)curl_getinfo($ch)を使用して取得について質問しないで、私はそれらを使用して結果を持っています。

ここでここでの結果と成功localhostの実行の情報

Array ([url] => http://emexonline.com:3000/MaximaWS/service.wsdl [content_type] => text/html [http_code] => 405 [header_size] => 203 [request_size] => 834 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0.578 [namelookup_time] => 0.25 [connect_time] => 0.422 [pretransfer_time] => 0.422 [size_upload] => 617 [size_download] => 1293 [speed_download] => 2237 [speed_upload] => 1067 [download_content_length] => 1293 [upload_content_length] => 617 [starttransfer_time] => 0.578 [redirect_time] => 0 [redirect_url] => [primary_ip] => 86.98.88.87 [certinfo] => Array () [primary_port] => 3000 [local_ip] => 192.168.0.102 [local_port] => 53325) 

error: no error 

が失敗し、サーバーの実行

Array ([url] => http://emexonline.com/MaximaWS/Service.asmx [content_type] => [http_code] => 0 [header_size] => 0 [request_size] => 0 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 30.001115 [namelookup_time] => 0.12449 [connect_time] => 0 [pretransfer_time] => 0 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => -1 [starttransfer_time] => 0 [redirect_time] => 0 [redirect_url] => [primary_ip] => [certinfo] => Array () [primary_port] => 0 [local_ip] => [local_port] => 0) 

error: Connection timed out after 30001 milliseconds 
+0

問題のあるサーバーでcURLが有効になっていますか? – FluxCoder

+0

localhostからポートを使用していて、他のエンドポイントに当たっているときに、サーバーからcurlを作成しているときはportを使用しています。これには理由がありますか?サーバからリモートサーバへtelnetを試してみてください。あなたのPCから3000番台のサーバと、同じコードを使用しているtypo brotherだったサーバ – krasipenkov

+0

@krasipenkovから試してみてください。 –

答えて

0

の結果との情報だだあなたのコードでも30から60にタイムアウトを増やすことができてい設定しない curl_setopt($ ch、CURLOPT_POST、1)このパラメータ。

+0

私はすでにそれを行っていますが、何も起こりません。 –

+0

問題はサーバー自体にあります。クライアントのサーバーでテストしました。正常に動作しました。 ありがとうございます。 PHPのiniではカールが有効になっていますが、Linuxのコアからはカールしていません。 –

関連する問題