以下のコマンドをPHPから実行するとサーバのエラーが出力され500エラーになります。
php
1$cmd = ' curl https://api.example.com/test \ 2 -u USER_ID: \ 3 -d abc=123 \ 4 -d def=ghi \ 5 -d title="Sample test" \ 6 -d jkl=xxxxxxx'; 7 8$buff = shell_exec($cmd);
サーバエラーログ
text
1% Total % Received % Xferd Average Speed Time Time Time Current 2 Dload Upload Total Spent Left Speed 3100 1985 100 1819 100 166 1819 166 0:00:01 0:00:01 --:--:-- 1256
正常にCURLでの外部リクエストを実行するために以下のプログラムを作成しました。
php
1 2$fields = array( 3 'abc' => 123, 4 'def' => 'ghi', 5 'title' => 'Sample test', 6 'jkl' => 'xxxxxxx', 7 ); 8 9 $fields = (is_array($fields)) ? http_build_query($fields) : $fields; 10 $curl = curl_init('https://api.example.com/test'); 11 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 12 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 13 curl_setopt($curl, CURLOPT_USERPWD, USER_ID.": "); 14 curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Length: ' . strlen($fields))); 15 curl_setopt($curl, CURLOPT_POSTFIELDS, $fields); 16 $response = curl_exec($curl); 17 curl_close($curl); 18 19 var_dump($response); 20
結果はリクエストからの正常なレスポンスを確認できず、上記CURLコマンドとPHPで作り直した内容が異なるようですが間違いが確認できませんがどこが間違いなのかわかりませんので、投稿します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。