Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Unable to bind address на Unix-сокет
 
 автор: Romio   (11.09.2016 в 13:25)   письмо автору
 
 

то на чем все : 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_UNIXSOCK_STREAM0);
if (!
is_resource($sock)) {
    echo 
'Не могу создать сокет: 'socket_strerror(socket_last_error()) . PHP_EOL;
}
if (!
socket_set_option($sockSOL_SOCKETSO_REUSEADDR1)) {
    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 его создали). Права доступа проверял.
Может я его не правильно подключаю? Тупик!
В общем нужна помощь!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования