TCPServer で実装された単純な Ruby サーバーがあり、PHP を実行している別のサーバーから POST 要求を介して呼び出す必要があります。ターミナルで cURL を実行するか、ブラウザでアクセスすると、Ruby サーバーは応答しますが、PHP サーバーから cURL を介して呼び出された場合は応答しません。fopen / stream_get_contents も呼び出してみましたが、それも機能しませんでした。また、cURL は PHP サーバー上で他のアプリと正常に動作します...
これが私のPHP関数です:
<?php
$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, 'RUBY_SERVER_IP:RUBY_SERVER_PORT');
curl_setopt($curl_handle, CURLOPT_POST, true);
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, 'test=test');
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true);
$updates = curl_exec($curl_handle);
$output = curl_getinfo($curl_handle);
print_r($output);
curl_close($curl_handle);
?>
Ruby サーバーは次のとおりです。
require "socket"
server = TCPServer.new(80)
loop {
client = server.accept
response = "<html>Got it</html>"
headers = ["HTTP/1.1 200 OK",
"Server: Ruby",
"Content-Type: text/html; charset=iso-8859-1",
"Content-Length: #{response.length}\r\n\r\n"].join("\r\n")
client.puts headers
client.puts response
client.close
}
うまくいかない理由はありますか?どうもありがとう!