可以使用 php -S 命令来设置对应用程序的远程访问吗?

问题描述 投票:0回答:1

我有一个学校项目,需要托管和运行 php 程序。我很难让它在 Apache 中按预期运行,但是,当我使用 php -S 运行它时,它运行得像冠军一样。我想将其托管在可通过外部 IP 访问的位置。我怀疑 php -S 只允许从本地计算机访问。

我想使用 php -s xxx.xxx.xxx.xxx:80。我想确认 php -S 不会这样做。我很高兴听到其他替代方案。

php apache php-builtin-server
1个回答
0
投票

回答这个问题,是的,可以。 内置 Web 服务器需要提供主机 + 端口组合(没有默认值),并且它不会实施任何主动检查来拒绝非本地地址:

$ php -S 192.168.0.15:8080
[Fri Sep  8 10:37:37 2023] PHP 8.1.2-1ubuntu2.14 Development Server (http://192.168.0.15:8080) started

在某些操作系统(例如 Linux)上,您需要管理员权限才能打开受保护的端口(低于 1024 的端口):

$ php -S 192.168.0.15:80
[Fri Sep  8 10:38:38 2023] Failed to listen on 192.168.0.15:80 (reason: Permission denied)
$ sudo php -S 192.168.0.15:80
[Fri Sep  8 10:38:41 2023] PHP 8.1.2-1ubuntu2.14 Development Server (http://192.168.0.15:80) started

像往常一样,如果您需要来自本地网络外部的连接,则需要在路由器中定义适当的重定向,以便将特定协议/端口的传入连接重定向到您的计算机,并为最终用户提供您的公共连接IP 地址或指向它的域名。请注意,IPv4 很稀缺,因此一些托管提供商在多个客户之间共享地址(运营商级 NAT,又名 CGNAT),因此不允许外部访问您的路由器。

其他注意事项:

  • 这是一个开发人员工具,根据其创建者的说法,不应在公共网络上使用

  • 默认情况下它不会处理并发请求。为此,您需要在启动服务器之前将

    PHP_CLI_SERVER_WORKERS
    环境变量设置为所需的工作人员数量。此功能是实验性的,在 Windows 上不可用。

  • 您的计算机需要打开,并打开控制台运行命令。如果它崩溃或关闭,您需要在那里再次运行它。有一些方法可以自动执行此操作,但这肯定不是该工具设计的场景。

你应该这样做吗?在您的用例中,绝对不是。只需修复您的代码/设置即可在 Apache 中工作。解决配置问题是学习过程的一部分。你不能每次在第一次尝试都不起作用时就放弃一个工具。

© www.soinside.com 2019 - 2024. All rights reserved.