Как отправить файл в PHP 5.05 с помощью cURL

#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(), чтобы определить, в чем заключалась конкретная проблема. Спасибо всем за вашу помощь!