Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Can';t将端口80或443用于XAMPP上的WebSocket_Php_Websocket_Port_Rfc6455 - Fatal编程技术网

Php Can';t将端口80或443用于XAMPP上的WebSocket

Php Can';t将端口80或443用于XAMPP上的WebSocket,php,websocket,port,rfc6455,Php,Websocket,Port,Rfc6455,我有一个Windows7XAMPP设置,用于快速测试PHP代码。我一直在使用我最近编写的PHP WebSocket脚本运行测试,除了端口80和443之外,它在我测试过的每个端口上都可以正常工作。80和443都不能使用ws或wss协议。当我尝试任何一个端口时,绝对不会有任何结果,脚本将永远运行在那里 各国: WebSocket协议试图解决现有协议的目标 现有HTTP上下文中的双向HTTP技术 基础设施因此,它被设计为在HTTP端口80和80上工作 443 以及: 默认情况下,WebSocket协议

我有一个Windows7XAMPP设置,用于快速测试PHP代码。我一直在使用我最近编写的PHP WebSocket脚本运行测试,除了端口80和443之外,它在我测试过的每个端口上都可以正常工作。80和443都不能使用
ws
wss
协议。当我尝试任何一个端口时,绝对不会有任何结果,脚本将永远运行在那里

各国:

WebSocket协议试图解决现有协议的目标 现有HTTP上下文中的双向HTTP技术 基础设施因此,它被设计为在HTTP端口80和80上工作 443

以及:

默认情况下,WebSocket协议将端口80用于常规WebSocket 用于WebSocket连接的连接和端口443通过隧道传输 传输层安全性(TLS)[RFC2818]

以及:

端口组件是可选的;“ws”的默认值是端口80,而 “wss”的默认值是端口443

那么我应该如何让端口80和443正常工作呢?
谢谢


Edit:这是
netstat
的第一行:


我想这意味着我不能使用端口80,对吗?

通常,这种问题会导致以下情况之一:

  • 有些东西已经在监听这些端口;端口绑定不能由多个进程共享
  • 您可能需要升级权限,但没有在这些端口上打开侦听器的权限(通常保留较低范围的端口)
  • 要查看是否是第一个问题,请尝试使用
    netstat
    查看您有哪些端口的侦听器:

    netstat -a -p TCP -o -n
    
    如果这是第二个问题,您可能必须调整运行服务器的方式,使其具有适当的权限

    在Windows下启用端口共享可能有一个变通方法(我没有尝试过):


    …但这种设置可能很难预测其行为。另一种选择是在IIS中设置代理(我认为这是占用您80端口的原因)。

    此答案上次修订是在2015年11月20日美国东部时间下午2点

    我发现了您的问题,因为它与我在Windows 10笔记本电脑上安装和配置XAMPP的设置过程类似

    (我将在下面详细解释我的具体情况,但在此之前,我将对您的问题给出一个非常快速的总结答案。)

    我以管理员身份运行XAMPP,方法是右键单击它并选择该选项。 港口问题似乎消失了。 现在,我可以通过在任务栏上的固定图标中单击鼠标左键来正常打开它,而无需指定管理员。 后一种结果是在24小时内多次重新启动计算机后出现的。 但愿我能确切地知道是什么改变了以及它是如何工作的,但就我所知,它现在工作得很好。

    2015年11月17日,我在XAMPP控制面板中收到一些错误。 这些错误与以下内容类似:

    “无法打开进程PID 4416” “端口80已被阻止” “端口443被阻止” “您不是以管理员身份运行”

    另外,我应该提到的是,我正在完成罗宾·尼克松(Robin Nixon)出版的第四版教材《学习PHP、MySQL和JavaScript与jQuery、CSS和HTML5》中第2章“设置开发服务器”中的步骤

    我还发现一个命令提示符“looking”框打开了,我不知道该怎么办,所以我后来关闭了它

    然而,为了回到正题,特别是对我来说,设置服务器并以尽可能类似于教科书说明的方式运行它非常重要,因此更改默认端口号对我来说似乎不是一个好的选择,因为我不确定如何更改端口号,例如主端口,可能会影响其他端口以及线路上的其他内容

    我还被其他一些建议弄糊涂了,这些建议是关于使用各种方法进行搜索,以确定还有哪些“事情”可能会中断我的XAMMP尝试使用的端口,即我的Apache服务器

    实际上,似乎Apache是PID 4416的源代码,根本没有任何东西在使用端口80或端口443。我还检查了端口3306是否被使用,因为教科书中提到它将是MySQL的默认端口,其他任何东西都没有使用它

    我通过转到“任务管理器”,然后转到“详细信息”,再转到“PID”来检查这些PID

    然后,在我的Windows10笔记本电脑中,我关闭了所有打开的任何窗口,甚至是XAMMP控制面板

    然后,我在“搜索窗口”栏中键入XAMMP

    当XAMMP出现时,我右键单击它并选择以管理员身份运行它

    当用这种方法打开控制面板时,我在XAMMP的控制面板中没有收到任何错误消息

    然而,当我将XAMMP固定到任务栏并尝试以正常方式打开它(左键单击打开)时,我收到了许多错误

    但是,当我右键单击任务栏上固定的XAMMP图标,然后在弹出单词XAMMP时再次右键单击,然后选择“以管理员身份运行”时,似乎没有错误

    这是一种变通解决方案

    我想这可能对一些人有帮助,但不是所有人

    我希望这有助于阐明类似的问题

    我将努力彻底解决这个问题

    在这种特殊情况下,我似乎需要找到一种方法来确保XAMMP在打开时自动作为管理员运行,并且需要一些我还没有发现的调整

    我希望这对其他人有帮助!:)

    我的大部分知识都是基于HTML5和CSS3以及搜索引擎优化,所以我现在正在努力学习更多关于服务器端和动态/交互式脚本的知识

    p.S.首次出现问题后24小时内