2017-03-14 28 views
0

これはかなり問題です。CodeIgniterプロジェクトでcURLを使用してコントローラを呼び出す

[project_url] /管理/ orderpicking/get_updated_statusesで私はCodeIgniterのプロジェクトにコントローラ機能を作成しました

関数名:get_updated_statuses コントローラ名:Orderpicking.php コントローラ場所:アプリケーション/管理

コントローラ内部

私が持っているすべては、私は、コントローラを打っていたことを確認するために

ob_start(); 
print_r('success'); 
file_put_contents('file.txt', ob_get_contents()); 
ob_end_clean(); 

です。

私はブラウザから直接コントローラに当たったとき、ファイルは内容として「成功」を伴って作成されます。

他のプロジェクトのcURLを使用してコントローラをヒットすると、何も起こりません。結果は空の文字列です(結果は気にしませんが、file.txtファイルは作成されません)。次のようにコントローラがある呼び出す

コード:

$data = array('datetime'=>new DateTime()); 
     $header = array(
      'Identification:Portal::ReadAPI', // TODO config 
      'Content-Type:application/x-www-form-urlencode' 
     ); 
     $url = '[local instance]/admin/orderpicking/get_updated_statuses'; // TODO config 

     $curlGetUpdatedItems = curl_init($url); 
     /** CURL OPTIONS */ 
     curl_setopt($curlGetUpdatedItems, CURLOPT_POST, 1); 
     curl_setopt($curlGetUpdatedItems, CURLOPT_POSTFIELDS, json_encode(serialize($data))); 
     curl_setopt($curlGetUpdatedItems, CURLOPT_HTTPHEADER, $header); 
     curl_setopt($curlGetUpdatedItems, CURLOPT_RETURNTRANSFER, true); 
//  curl_setopt($curlGetUpdatedItems, CURLOPT_SSL_VERIFYPEER, true); 
//  curl_setopt($curlGetUpdatedItems, CURLOPT_SSL_VERIFYHOST, 2); 
//  curl_setopt($curlGetUpdatedItems, CURLOPT_CAINFO, $certificate_location); 
     /** CURL OPTIONS */ 

     $result = curl_exec($curlGetUpdatedItems); 

は、私がここで作ってるんだ、明らかな間違いがありますか? 後でポータルhttpsを作成するときに証明書を追加しますが、それまでは必要と思わないでしょうか?

どのようなヘルプやアドバイスは大歓迎です!

----- UPDATEは-----

結果をvar_dump'ing後、私は真のブール値が返されることに気付きました。 curl_error($curlGetUpdatedItems)は、空の文字列を返します。

+0

「この他のプロジェクト」はどこですか? localhostは自分のPCの外部からはアクセスできません。他のものがあなたのlocalhostを見つけることができるようにローカルDNSエントリを設定していますか? – MonkeyZeus

+0

あなたの "他のプロジェクト"から[[curl_error() '](http://php.net/manual/en/function.curl-error.php)を試してください – MonkeyZeus

+0

どこにいてもエラー報告が有効になっていますか? Webサーバーのアクセスログを確認しましたか? – MonkeyZeus

答えて

1

あなたが手順で行い、それを行うことができます:ヘッダが必要な場合

$data_string = http_build_query($data); 

$ch = curl_init(); 
curl_setopt($ch,CURLOPT_URL, $url); 
curl_setopt($ch,CURLOPT_POST, count($data)); 
curl_setopt($ch,CURLOPT_POSTFIELDS, $data_string); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$result = curl_exec($ch); 
curl_close($ch); 

$result = json_decode($result,true); 

は知らない、私はデフォルトがすでにそれが

IDアプリケーション/ X-WWW-フォームでurlencodeであることを考えます動作しない場合は、arrayの$ dataの値を変更してみてください。思うが助けてください。 :)

+0

理由はわかりませんが、これは素晴らしい結果でした! – Skytiger

関連する問題