查找可用于PHP服务器的端口

9
PHP 5.4提供了一个内置的用于开发目的的服务器。我已经期待这样的功能好几个月了,因为在此之前我不得不将一些PHP脚本组合起来以监听传入连接并处理它们(因为我不想费力安装实际服务器)。现在我唯一需要担心的事情是:如何分配端口?在我的PHP脚本中,我曾经这样做过:
socket_bind($sock,"localhost",0) or die("Could not bind socket");
socket_getsockname($sock,$ip,$port);

$port将根据可用情况由操作系统分配的端口号。

我只是想知道PHP内置服务器中是否存在此类功能,如果有,访问它的命令行应该是什么。


这是一个有趣的问题,但就我而言,运行现成的服务器比拼凑一个 PHP 脚本来完成同样的事情要容易得多。 - Brad
1
可能本来可以,但这是一个非常好的网络练习 ;) - Niet the Dark Absol
WebMatrix自带几乎所有功能的驱动程序,而且安装包也相对较小。http://microsoft.com/web/webmatrix。这就是我用来演示本地开发的工具。 - rackemup420
2个回答

1
回答自己的问题(再次),我使用以下批处理脚本查找可用端口并启动服务器:
@echo off
for /L %%a in (8000,1,8100) do netstat /a /n | find "%%a" | find "LISTENING" >NUL || set tmp_phpserver=%%a&& goto found
echo No free ports found in range 8000-8100...
pause
exit
:found
echo Starting server on port %tmp_phpserver%
start "PHP server %~p1 on localhost:%tmp_phpserver%" /min php -S localhost:%tmp_phpserver%
echo Server started
timeout 3
start http://localhost:%tmp_phpserver%/%~nx1
set tmp_phpserver=

0

来自PHP文档

示例 #1 启动Web服务器

 $ cd ~/public_html
 $ php -S localhost:8000

你已经完成了 - 服务器正在8000端口上运行。


3
如果此时有其他程序(比如另一个PHP开发服务器)正在使用8000端口,那么这个方法将会失败。 - user149341

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接