Vagrant 端口转发到 PHP 服务器/php -s 上的权限被拒绝错误

Vagrant port forwarding to PHP server / Permission denied error on php -s

我在 OsX Yosemite 上,必须执行 the steps here 才能启用端口转发。

我在 vagrant up

结束时得到了这个
==> default: Running triggers after up...
==> Fowarding Ports: 80 -> 8080, 443 -> 4443 & Enabling pf 

现在的问题是,如果我通过 ssh 进入我的 vagrant box 和 运行 php 端口 443 服务器

php -S localhost:443

它说

Failed to listen on localhost:443 (reason: Permission denied)

在我的盒子(主机)上,一个

curl http://127.0.0.1:8080/

returns 操作超时

如何让 php 服务器在 vagrant 上运行?

尝试 运行 php -S 作为 root(例如在 Ubuntu 上的 sudo -s 之后)。 1024以下的端口是特权端口,只能由root打开。

您虚拟机中的端口是 :443。但是您可以使用 php -s 0.0.0.0:4443 例如。在 127.0.0.1:4443 上列出也不起作用,因为端口转发不通过本地主机访问 VM - VM 中有一个额外的(虚拟)网络接口。

假设你的 vagrant box 是 Linux 只有 root 可以监听 1024 以下的端口。通常人们使用 Apache 或 nginx 这样的服务器以 root 身份监听端口,然后放弃所有其他权限并通过处理至 php。或者,您可以使用 iptables 将流量重定向到端口 443 到更高的端口。 (并在更高的端口号上启动您的服务器)