При вызове функции socket_bind или socket_create_server используя unix-сокеты,
постоянно вылетают ошибки(permission denided, already in use, unknown error)
Например:
FastCGI sent in stderr: "PHP message: PHP Warning: stream_socket_server(): unable to connect to unix:///var/run/php-fpm.sock: (Unknown error) in /usr/share/nginx/html/index.php on line 2" while reading response header from upstream, client: xxx.xx.xxx.xx, server: xx.xx.xx.xx, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fpm.sock:", host: "xx.xxx.xx.xx"
FastCGI sent in stderr: "PHP message: PHP Warning: socket_bind(): unable to bind address [98]: Address already in use
Эту ошибку дает вот этот код:
server.php
<?php
error_reporting(E_ALL);
$address = '/run/php/php7.0-fpm.sock';
echo "Start";
//unlink($address);
$sock = socket_create(AF_UNIX, SOCK_STREAM, 0);
if (!is_resource($sock)) {
echo 'Не могу создать сокет: '. socket_strerror(socket_last_error()) . PHP_EOL;
}
if (!socket_set_option($sock, SOL_SOCKET, SO_REUSEADDR, 1)) {
echo 'Unable to set option on socket: '. socket_strerror(socket_last_error()) . PHP_EOL;
}
if (!socket_bind($sock, $address)) {
echo 'Не могу привязать сокет: '. socket_strerror(socket_last_error()) . PHP_EOL;
}
socket_close($sock);
?>
Со следующим кодом ошибка будет 0(unknown error)
<?php
$address = 'unix:/run/php/php7.0-fpm.sock';
$socket = stream_socket_server($address, $errno, $errstr);
if (!$socket) {
echo "$errstr ($errno)<br />\n";
} else {
while ($conn = stream_socket_accept($socket)) {
fwrite($conn, 'The local time is ' . date('n/j/Y g:i a') . "\n");
fclose($conn);
}
fclose($socket);
}
?>
В строке
$address = 'unix:/run/php/php7.0-fpm.sock';
пробовал разные вариации..
unix:///run/php/php7.0-fpm.sock
/run/php/php7.0-fpm.sock
Сокет по сути уже существует(nginx+php7.0-fpm его создали). Права доступа проверял.
Может я его не правильно подключаю? Тупик!
В общем нужна помощь!