Я настроил один из моих серверов для приема файлов по почте, конвертирования их и отправки в ответ. Сервер php использует эту функцию через curl.
Важная часть в моем PHP-скрипте выглядит так
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_PORT, $port);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('file_contents' => '@' . $filename));
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
file_put_contents($filename . '.png', curl_exec($ch));
print_r(curl_getinfo($ch));
echo curl_errno($ch);
curl_close($ch);
Однако кажется, что curl даже не подключается к другому серверу, а curl_getinfo только возвращает
Array
(
[url] => (redacted)
[content_type] =>
[http_code] => 0
[header_size] => 0
[request_size] => 0
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 0
[namelookup_time] => 0.036982
[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] => (redacted)
[certinfo] => Array
(
)
)
curl_errno возвращает 28 (CURLE_OPERATION_TIMEDOUT), даже если я увеличил время ожидания. Как я уже говорил, кажется, что он даже не устанавливает соединение с удаленным хостом. Можно подключиться к данному URL с помощью веб-браузера.
Задача ещё не решена.
Других решений пока нет …