我已经看到这个问题至少被问了十几次。没有一个回复对我有帮助。
代码:
$host = "127.0.0.1";
$port = 80;
//no timeout
set_time_limit(0);
//create socket
$socket=socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");
if (!socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1)) {
echo socket_strerror(socket_last_error($socket));
exit;
}
$result = socket_bind($socket, $host, $port) or die("Could not bind socket\n");添加“if”语句是因为一个响应建议将其放入其中。似乎对我没什么帮助。我打算把它拿出来。不管怎样,我的错误是:
警告: socket_bind():无法绑定地址10013:试图以访问权限禁止的方式访问套接字。
是的,我知道这意味着端口正在被另一个进程使用。我大约更改了30次端口号。我暂时关闭了(Windows 8)防火墙。我运行netstat,我看到这些端口没有关闭,所以我有大约30个具有相同PID和名称的套接字。
所以,我的问题是:我做错了什么?
发布于 2014-06-14 21:59:28
要绑定到低于1024的端口,该进程需要特权权限。通常只有root才能做到这一点。
有关此主题的更详细讨论,请阅读此处:Is there a way for non-root processes to bind to "privileged" ports on Linux?
发布于 2014-06-15 02:41:51
感谢那些回复的人,但我自己解决了这个问题。我使用的教程是导航到server.php文件。别笑,我是通过浏览器浏览的。所以,这条消息就会在我的浏览器上弹出来。
我在命令提示符中运行了相同的文件,我要么得到该错误,要么看起来它挂在那里,这取决于我选择的端口。它并没有坠毁。它就是没有什么可输出的。我给了它一些输出的东西(耶!!)。
不管怎样,再次感谢你。
发布于 2015-02-27 06:12:52
大多数情况下,出现此错误的原因是您正在尝试使用的套接字已被另一个程序使用。您正在尝试打开套接字以侦听端口80,apache正在侦听哪个端口?如果它也是端口80,那就有问题了。
https://stackoverflow.com/questions/24219910
复制相似问题