使用 php -s localhost:8080
可以快速启动一个开发服务器,非常方便,是我现在需要简单服务器支持时的首选。
不过我最初了解到这个功能的时候,它(可能)还不支持请求重写,也就是说,我们访问 /foo/bar
,它就会去当前目录里查找 /foo/bar
,找不到就 404。如果想要实现 index.php
重定向,必须手动编写路由文件,比较麻烦。我宁可用 nginx 实现,因为部署上线的时候早晚要用。
最近偶然发现,PHP built-in web server 已经支持请求重写了,如果命中,就会直接返回目标文件;如果没有命中,就会沿着目录往上找,直到找到 index.php
或者 index.html
,或者到启动服务器的根目录,然后把请求地址放在 $_SERVER['PATH_INFO']
里,留待 php 处理。
这样一来,无论是 WordPress,还是 Laravel,还是其它基于路由的单一入口项目,都可以直接使用 PHP built-in web server 开发了,简单方便快捷。甚至连纯前端项目,如果你不熟悉服务器端的配置,也可以简单的安装一个 PHP 来实现。
比如,在本地开发 WordPress,可以这样:
# 安装 php 和 mysql
brew install php
brew install mysql
# 配置 mysql root 用户密码,替换下面的 `NEWPASS`
$(brew --prefix mysql)/bin/mysqladmin -u root password NEWPASS
# 下载并解压 wordpress.zip,进入目录,启动服务器
php -S localhost:8080
# 完成!
参考文档:
欢迎吐槽,共同进步