ваш код никогда не проверяет, не завершаются ли ваши вызовы curl_setopt, исправьте это, и ошибка должна стать понятной.может быть что-то вроде
function ecurl_setopt ( /*resource*/$ch , int $option , /*mixed*/ $value ):bool{
$ret=curl_setopt($ch,$option,$value);
if($ret!==true){
//option should be obvious by stack trace
throw new RuntimeException ( 'curl_setopt() failed. curl_errno: ' . return_var_dump ( curl_errno ($ch) ).'. curl_error: '.curl_error($ch) );
}
return true;
}
- , которое выдает исключение вместо возврата bool (false) в случае сбоя curl_setopt.
Ваша настоящая проблема здесь (вероятно) в том, что вы предполагаете, что $ _SERVER ['DOCUMENT_ROOT'] заканчивается на разделитель каталогов (/
в mac / linux / bsd / etcсистем, \
в системах Windows), это неверно, это не так, допустим, ваш корень www имеет значение /srv/http/default/www
, а ваш файл закрытого ключа /srv/http/default/www/private_key.txt
, ваш код попытается получить доступ к файлу с именем wwwprivate_key.txt
в папке /srv/http/default
, вместо попытки доступа к файлу с именем private_key.txt
в папке /srv/http/default/www
- решение:
$certpath = $_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR.'private_key.txt';
(константа DIRECTORY_SEPARATOR равна 1 из php'sглобальные константы , для Windows она установлена на \
и везде /
. *