Прежде всего, я мог видеть, что проблемы вокруг проблемы уже решены.Не удалось запустить сервер сокетов
PHP web socket unable to bind socket
Issue in setting the socket server
socket_bind(): unable to bind address [99] (Ubuntu on Amazon EC2)
и многие другие ресурсы, все они сказали, что проблема в используемый порт или внешний IP, и т.д.
Но я не мог преодолевай это. Мой сервер работает на CentOS 6.3 и использует CPanel (это сервер HP https://www.hpcloud.com/).
Веб-сокет демо исходный код, что я получаю на https://code.google.com/p/phpwebsocket/
Моя установка
$master = WebSocket("127.0.0.1",4444); // even I tried with localhost, they worked same
Вот шаг, что я попробовал, и соответствующие ошибки:
1 /. Я попытался следующие команды, чтобы обеспечить порт, который я использовал можно использовать
$ lsof|grep 4444 $ netstat -a -p -n
Но я всегда получал ошибку, хотя этот порт 4444 свободен
Предупреждение: socket_bind() : не удалось связать адрес [98]: адрес уже используется в /home/myapp/public_html/websocket/server.php на линии 60
2 /. Странно, когда я проверил порт 835, который использовал на
crond 1621 root DEL REG 252,1 39835 /lib64/libpam.so.0.82.2.#prelink#.B1eyGx
atd 1633 root DEL REG 252,1 39835 /lib64/libpam.so.0.82.2.#prelink#.B1eyGx
непонятное случилось:
Тогда я побежал server.php на моей командной оболочки терминала
php /home/myapp/public_html/websocket/server.php
в ошибка исчезла, а не
Начато: 2013-08-16 03:19:54
Мастер сокета: идентификатор ресурса # 4
Прослушивание: 127.0.0.1 порт 835
Я думал, что он начал работать, но на самом деле это не так, потому что, когда я открываю server.php
в браузере с URL
http://mysite/server.php
ошибка "разрешение denined"
Wa rning: socket_bind() [функция.сокетов привязки]: не удалось связать адрес [13]: Разрешение отказано в /home/myapp/public_html/websocket/server.php на линии 60 socket_bind() не
Отредактировано: О разрешение, я может открыть client.html в том же самом каталоге с server.php без проблем. Разрешение на доступ к папке - 755, а пользователь - не root. Все мои команды был реализован в корневой привилегии
Любая помощь очень ценится :(
Это звучит как вопрос прав доступа. Какой пользователь httpd работает как и какой пользователь вы используете, как при запуске из командной строки? –
У меня есть два пользователя: root & myuser и владелец папки в настоящее время myuser. Я мог запустить client.html в том же самом каталоге уровня с server.php абсолютно, я думаю, что это не было причиной. –
. Я предлагаю, чтобы при запуске из командной строки, поскольку процесс выполняется с вашими привилегиями, он может имеют доступ к некоторому ресурсу/файлу, который он должен выполнить, тогда как пользователь, которому работает ваш веб-сервер (httpd), не имеет доступа к ошибке. Я не могу сказать, что это файл/ресурс. –