June 15, 2022

Работа с сокетами (check_socket): Fail

Дебажим через PHP консоль Битрикса:

$level = error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('log_errors', 0);

$handler = set_error_handler(function($errno, $errstr, $errfile, $errline) {
 print_r([$errno, $errstr, $errfile, $errline]);
});

$socket = fsockopen('ssl://domain.ru', 443, $errno, $errstr, 5);

var_dump($socket);

error_reporting($level);
set_error_handler($handler);

Дальше смотрим ошибки и проделываем один из нескольких вариантов:

1. В /etc/hosts — добавить собственный хост: <IP> <domain.tld>

2. Обновляем сертификаты:

yum install ca-certificates -y
update-ca-trust

3. Если предыдущий пункт не помог, а дебаг кажет ошибку типа SSL routines:ssl3_get_server_certificate:certificate verify failed — дописываем корневой сертификат LE в /etc/pki/tls/cert.pem (или где там у вас корневые сертификаты в ОС хранятся) в конец файла.