У меня есть простой скрипт PHP, который использует CURL для отправки HTTP-запроса на удаленный сервер.сервер не отвечает на запрос POST с CURL + PHP
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://91.250.77.10/test.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('a' => 'b'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
if ($error)
echo $error;
else
echo $contents;
Это приводит к ошибке: «no response from server». Запрос также не может быть найден в журнале доступа на удаленном сервере!
Более того, если я посылаю postfields как строку запроса, т.е .:
curl_setopt($ch, CURLOPT_POSTFIELDS, '&a=b');
тогда все просто отлично.
Похоже, что что-то не так с конфигурацией Apache или PHP на удаленном сервере. Любые намеки?
Edit:
На данный момент, похоже, что сервер не принимает (или правильно обрабатывать) запрашивает с Content-Type: многокомпонентные/форма-данные (CURL использует этот тип При настройке array как postfields, но не при настройке строки.)
Поскольку мне нужно отправить файл с запросом, я должен использовать multipart/form-data. Итак, как я могу заставить сервер правильно справиться с этим?
'CURLOPT_POSTFIELDS [...] Этот параметр может быть либо принят в качестве urlencoded строки, как«para1 = val1 & para2 = значение2 & .. . 'или как массив с именем поля в качестве ключа и данных поля как значение ', как вы можете видеть по адресу http://www.php.net/manual/en/function.curl-setopt.php – Eleazan
@Eleazan Спасибо, исправлено – DevZer0
Это не проблема, поскольку я тестировал ее с помощью curl_setopt ($ ch, CURLOPT_HTTPHEADER, array ('Content-Type: multipart/form-data')); –