PHP 的最新版本有一个内置的 Web 服务器(用于非生产环境),可以通过 启动php -S [...]
。
在尝试启动它之前,如何检查它是否已在服务器上运行?
我意识到最不友好的方法是尝试启动它并留意错误消息Failed to listen on [...]
,但我认为可能有一种更干净的方法:-)
编辑:我忘了说,我最终希望能够在脚本中检查这一点,并且仅在服务器尚未启动时才启动它。我还忘了说,我正在寻找 Linux 的解决方案,但当然也欢迎 Windows 解决方案,以防有一天其他人也会寻找它 :-)
答案1
由于我对 Paolo 的答案的编辑被拒绝,因此这里有一个更完整的答案:
ps aux | grep php
如果 php 当前正在运行,此命令将输出如下内容:
pi 3245 0.0 0.5 21400 2416 pts/0 S Jan29 0:02 php -S localhost:8000 -t /path/to/php/docroot
pi 3518 0.0 0.3 5220 1712 pts/0 S+ 00:42 0:00 grep --color=auto php
第二行可以忽略,因为它只是自引用搜索命令。此脚本将检查服务器是否正在运行,如果没有运行,则启动它:
if ! ps aux | grep -v grep | grep -qs 'php -S localhost:8000';
then
php -S localhost:8000 -t /path/to/php/docroot &>/dev/null &
fi
答案2
正如 Michael Hampton 所建议的那样,类似的命令ps aux | grep php
将显示 PHP 的网络服务器是否已启动。