Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Unable to bind address на Unix-сокет, ошибка при создании сокета
Romio  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 2
Пользователь №: 43367
На форуме: 3 месяца
Карма:




то на чем все : vds ubuntu server 16.04, nginx+php7.0-fpm

При вызове функции 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 его создали). Права доступа проверял.
Может я его не правильно подключаю? Тупик!
В общем нужна помощь!
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Romio  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 2
Пользователь №: 43367
На форуме: 3 месяца
Карма:




Решено
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса