いつもお世話になっております。
一週間悩んで解決しなかったので、質問致しました。
実装したいことは、
PHPからRuby on Railsのサーバーにログイン情報をPOSTで送って、
その際にCookieの情報を一時的ファイルに書き込み、
json形式でサーバーにPOSTすることです。
エラー文(PHP側):HTTP/1.1 500 Internal Server Error Date: Sat, 26 Sep 2015 04:24:51 GMT Status: 500 Internal Server Error Connection: close Content-Type: text/html; charset=utf-8 Content-Length: 23214 X-Request-Id: 19fbbbb6045a8727ae3122ff31d1da82 X-Runtime: 2.062326
エラー文(Rails側):TypeError in EditorController#〜
can't convert nil into String
送っているjson形式に問題が無い(少なくとも形は)、URLに問題が無いことは確認しております。
PHPからのPOST通信がうまくいっていないのだと思いますが、原因が分かりません。
最初のログインでのPOST通信は、正常に行われています。
具体的なコードは以下のようになっています。
PHP
1//ログイン 2//Cookie保存用のtempファイルを作成 3$tmp_path = tempnam(sys_get_temp_dir(), "PRE"); 4//postするデータの配列 5$account_data = array('login_id' => $login_id ,'login_password'=>$login_password); 6$url = "http://~ログイン用URL"; 7$ch = curl_init(); // はじめ 8curl_setopt($ch, CURLOPT_URL, $url); 9curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 10//POST送信 11curl_setopt($ch,CURLOPT_POST, true); 12curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($account_data)); 13//Cookie受信 14//cookieオプション 15curl_setopt($ch,CURLOPT_COOKIEFILE,$tmp_path); 16curl_setopt($ch, CURLOPT_COOKIEJAR, $tmp_path); 17$html=curl_exec($ch);//実行 18curl_close($ch); //終了 19$pre_data=json_decode($html); 20$token=$pre_data->session->_csrf_token; 21echo 'token:'.$token.'<br>';//正常に出力されます 22echo 'tmp_pass:'.$tmp_path.'<br>';//正常に出力されます 23$url = "http:// データアップロード用"; 24$data=//省略していますが、連想配列でデータを格納 25$header = [ 26 'Authorization: Bearer '.$token, 27 'Content-Type: application/json', 28]; 29$ch = curl_init(); // はじめ 30curl_setopt($ch, CURLOPT_URL, $url); 31curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 32//curl_setopt($ch,CURLOPT_POST, true); 33//Cookie送信 34//cookieオプション 35curl_setopt($ch,CURLOPT_COOKIEFILE,$tmp_path); 36curl_setopt($ch, CURLOPT_COOKIEJAR, $tmp_path); 37$json_data=json_encode( $data , JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES ); 38echo $json_data;//json形式で正常に出力されています 39echo '<br>'; 40curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); 41curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data); 42curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 43curl_setopt($ch, CURLOPT_HEADER, true); 44$result = curl_exec($ch);//実行 45echo $result.'<br>';//Rails側の can't convert nil into Stringエラー 46curl_close($ch); 47
解決したいことは、
エラー文(PHP側):HTTP/1.1 500 Internal Server Error Date: Sat, 26 Sep 2015 04:24:51 GMT Status: 500 Internal Server Error Connection: close Content-Type: text/html; charset=utf-8 Content-Length: 23214 X-Request-Id: 19fbbbb6045a8727ae3122ff31d1da82 X-Runtime: 2.062326
です。
何かわかる方いらっしゃいましたら、ご教示下さい。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー