【问题标题】:Running PHP 5.4 built-in web server outside localhost在 localhost 之外运行 PHP 5.4 内置 Web 服务器
【发布时间】:2011-12-04 17:34:18
【问题描述】:

是的,即将发布的 PHP 5.4 中有一个内置的 Web 服务器,您可以在他们的候选版本中试用它(我最近也发现了这个!)

http://php.net/manual/en/features.commandline.webserver.php

我需要帮助弄清楚的是,有没有办法让它在 localhost 以外的域名上运行(它在 localhost、80 端口上运行良好)?甚至 127.0.0.1 也不起作用。我在我的主机文件中放入了虚拟主机名以指向 127.0.0.1,但它们也不起作用。我知道它只是一个候选版本,但我想知道是否有其他人已经提出了解决这个问题的方法,以便我可以在我的 hosts 文件中使用指向 127.0.0.1 的实际域名来测试我的应用程序。操作系统为 Windows 7 Professional SP1。

我已经尝试过的事情: 1. 谷歌搜索(呃) 2. 通过 php.ini 查看选项 3. 尝试 127.0.0.1、我的 LAN IP、我的 WAN IP 转发端口 80 并修复 NAT 环回问题(运行 DD-WRT 的路由器)

【问题讨论】:

  • 如果它是一个 web 服务器,那么你最好使用 SuperUser 或 ServerFault,这个网站将面向 使用 PHP 进行实际编程
  • 我不确定它是否属于,因为这是 PHP 内置的东西,可能与 PHP 本身的配置有关。无论如何感谢您的建议!
  • 我想了一下,我认为你是对的。我只是将我自己的问题标记为将其移至 ServerFault。希望版主尽快过来。
  • 它不属于 SF,因为它不是真正的网络服务器。它仅用作开发工具。为什么要在 localhost 以外的其他域上运行它?还有你到底试过什么? php -S www.example.localnet:9000 运行良好。它甚至忽略了实际的Host: 请求标头。你试过哪个版本? (测试版可能不适合投诉错误。)
  • Mods 需要在关闭时冷静下来……这是一个完全合理的问题。

标签: php php-builtin-server


【解决方案1】:

我在 Windows XP 系统上进行了这些测试,但通过修改命令应该在 Linux 上也能正常工作。

像这样运行你的 PHP 测试服务器:

C:/php/php.exe -S 0.0.0.0:80
or
/usr/bin/php -S 0.0.0.0:80

0.0.0.0 将绑定到系统上所有可用的 IP 地址。

在网络上的另一台机器上,我将 hosts 文件配置为使用自定义域指向运行 PHP 的系统的内部 IP。这不是 127.0.0.1,因为它指的是本地主机,在我的情况下,我将我的主 PC 指向 192.168.88.247,它是运行 PHP 的 XP 机器。请注意,防火墙应禁用或设置为允许运行 php 的机器上的端口 80 上的流量。

我将路由器配置为将流量从外部端口 80 端口转发到 192.168.88.247:80。然后使用来自外部网络的 PC 上的主机文件,我将假域配置为指向我的 WAN IP。我能够从外部访问 PHP Web 服务器。

也就是说,它只是一个用于测试的服务器,因此对外开放可能存在未知的安全风险。

希望对你有所帮助。

【讨论】:

  • 感谢 0.0.0.0 提示!太... ;-)
  • 如何让它只接受来自预先指定的主机的连接?
  • @AhmadHajjar 如果您希望 PHP Web 服务器只接受来自某些主机的连接,您将需要在本地计算机上配置防火墙(或路由器,如果使用 NAT 进行外部服务),因为内置服务器没有任何类型的访问控制。虽然不那么安全,但我想您可以配置路由器脚本以查看远程地址并将其与允许的主机列表进行比较,如果它在列表之外则终止请求。
  • 喜欢它,这样可以在docker内部使用它
  • JavaFX 也有类似的问题。尽管在 URL 中使用了http://localhost,但它会说“连接”被拒绝。我不确定为什么连接在localhost 时会被 JavaFX 拒绝,但0.0.0.0 已修复它,谢谢!
猜你喜欢
  • 1970-01-01
  • 2017-04-29
  • 2016-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-11
  • 2014-07-18
  • 2015-07-27
相关资源
最近更新 更多