#php #curl
#php #curl
Вопрос:
Я пытаюсь отправить файл в PHP 5.0.5 с помощью cURL, но не могу этого сделать. Он возвращает bool(false). Я могу отправить его с помощью командной строки, но мне нужно отправить его в моем PHP-коде.
Это код командной строки, curl —data-binary @employee_extract.txthttps://testserver.com/testapp.aspx —прокси http://111.111.11.11:8080
Это успешно возвращенное сообщение,
<?xml version="1.0"?>
<Status>
<result>ok</result>
<size>192</size>
<id>20190409134142_C12040C53BCC4AC6B4A09E1BC476D262.txt</id>
<message>
<p>file</p>
<p>No xmldoc posted, saving stream.</p>
</message>
</Status>
PHP-код:
$url = 'https://testserver.com/testapp.aspx';
$proxy = '111.111.11.11:8080';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
// send a file
curl_setopt($ch, CURLOPT_POST, true);
$args['file'] = "@employee_extract.txt;filename=file;type=text/plain"
curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
$curl_scraped_page = curl_exec($ch);
curl_close($ch);
echo $curl_scraped_page;
var_dump($curl_scraped_page);
фактические результаты: var_dump($curl_scraped_page) возвращает значение bool(false)
ожидаемые результаты: успешное сообщение
Комментарии:
1. «Я пытаюсь отправить файл в PHP 5.0.5» Надеюсь, вы шутите. php.net/eol.php
2. Да, почти 15 лет.
3. Использовали ли вы curl_errno() для проверки конкретной причины сбоя?
4. Спасибо, Патрик! curl_errno() помогла мне разобраться в проблеме. В итоге я добавил этот curl_setopt ($rest, CURLOPT_SSL_VERIFYPEER, false);
Ответ №1:
Вы используете версию PHP, срок службы которой истек в 2005 году, почти 15 лет назад. Вероятно, ваша проблема связана с этим. Например, ваш пример URL использует HTTPS — возможно, что версия curl, встроенная в ваш интерпретатор vintage PHP, несовместима с конфигурацией HTTPS веб-сервера, к которому он подключается.
(Даже если «5.0.5» — это опечатка, и вы на самом деле имели в виду PHP 5.5, срок действия этой версии истек в 2016 году.)
Обновите свою систему до поддерживаемой версии PHP.
Комментарии:
1. Я согласен, что мне нужно обновить мою версию PHP. Спасибо всем за вашу помощь!
2. Я согласен, что мне нужно обновить мою версию PHP. Я использовал curl_errno(), чтобы определить, в чем заключалась конкретная проблема. Спасибо всем за вашу помощь!