linux — curl против команды libcurl с использованием php-curl

у меня есть curl команда, которая отлично работает из командной строки, которая выглядит так:

curl --cert /path/to/cert.pem \
--cert-type PEM \
--form "files[0]=@/path/to/file.csv" \
https://url.com/whatever

Я также могу запустить его успешно с помощью PHP

exec("curl --cert /path/to/cert.pem --cert-type PEM --form \"files[0]=@/path/to/file.csv\" https://url.com/whatever");

Переводя команду в php-curl я получил

$url = "https://url.com/whatever";
$certificate = "/path/to/cert.pem";
$filePath = "/path/to/file.csv";
$postData = array("files[0]" => "@".$filePath);

// Upload request
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_SSLCERT, $certificate);
curl_setopt($ch, CURLOPT_SSLCERTTYPE, "PEM");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);

// I have tried WITH or WITHOUT the following options to no avail
// Note that SSL_VERIFYPEER false is not necessary -- I do not have a self-signed cert in the chain
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);

$postUploadResponse = curl_exec($ch);

и это не работает. Я получаю сообщение от сервера о том, что аутентификация не удалась и мой сертификат недействителен (хотя тот же сертификат работает из строки cmd).

Важная деталь: эта функция работает отлично (с SSL_VERIFYPEER false, поскольку я использую самоподписанный сертификат локально) из моей локальной установки XAMPP, но тот же код не выполняется на сервере.

Сервер находится на Debian 8.3.

curl --version является

curl 7.38.0 (x86_64-pc-linux-gnu) libcurl/7.38.0 OpenSSL/1.0.1k zlib/1.2.8 libidn/1.29 libssh2/1.4.3 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smtp smtps telnet tftp
Features: AsynchDNS IDN IPv6 Largefile GSS-API SPNEGO NTLM NTLM_WB SSL libz TLS-SRP

Что может быть причиной этого ? Есть ли что-то, что может привести к неправильной отправке моего сертификата при использовании libcurl ?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector