Добрый вечер. Данный код на локалке работает без ошибок (загрузка файла на ЯДиск по ссылке), но при переносе на сервер выбивает в заголовках: 405 METHOD NOT ALLOWED
fedorenko_k: Да, я загрузку смотрел,а не скачку.
Есть подозрение в разных версиях курла.
Я предлагаю сделать запрос на свой хост и проверить ,какой метод используется гет или пост, если гет,то попробовать принудительно пустую строку засунуть в http request.
fedorenko_k: На своем сервере сделайте страницу, которая выводит отданные ей заголовки или записывает в лог.
Дальше сделайте тот же запрос,но не на яндекс,а свою страницу и скачайте ответ или проверьте лог.
fedorenko_k: или сделать запрос на сайт,где уже выводятся все заголовки
или включить log verbose в curl если там есть вывод отправленных данных (насчет последнего подробностей не знаю)
fedorenko_k: Да, я не точно выразился .
в php нужно примерно так проверять
($_SERVER['REQUEST_METHOD'] == 'POST') or ($_POST)
echo $_SERVER['REQUEST_METHOD']
Не пишу на php, проверить не на чем.
fedorenko_k: Есть метод в лоб, руками написать все тело запроса и отправить через сокет.
var_dump($_POST); - выдало пустой массив или заполненный? В запросе-то только гет переменные.
dump (server) сделайте, хотелось полную строку запроса посмотреть.
A long parameter set to 1 tells libcurl to not include the body-part in the output when doing what would otherwise be a download. For HTTP(S), this makes libcurl do a HEAD request. For most other protocols it means just not asking to transfer the body data.
Enabling this option means asking for a download but without a body.
fedorenko_k: Мда. Странно.
0. без nobody попробуйте на яндекс,
1. stackoverflow.com/questions/3757071/php-debugging-curl
Можно включить логи и увидеть сырой запрос (скорее всего) Не пробовал.
2.
Должны быть логи обычные на вашем серваке, возможно там будет причина ошибки 400
3.
Пустую строчку в тело запроса впишите, вы уже отправляли не пустую первый раз,теперь пустую "", прям впишите в коде.
Дальше попробуйте на себя и на яндекс.