我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

php5.4版本开始,已经支持内置的webserver。也就是说:可以不使用apache,也不使用nginx,只要你的命令行能够识别php这个命令,那么就可以通过这个php命令,来启动一个www服务了。

当然,这样启动的php网站,就不能享受到传统的.htaccess或者nginx.cnfrewrite的好处了。但是,也是为大家打开了一扇新的大门,不是嘛?

苏南大叔:不使用 apche/nginx,php 命令如何启动 www 服务? - php命令启动www服务
不使用 apche/nginx,php 命令如何启动 www 服务?(图4-1)

在本文中,苏南大叔将要描述php命令,如何启动一个网站www服务。本文内容,不分操作系统,只要你的php大于等于5.4,在命令行中可以正确识别php命令即可。测试环境:macphp@7.2.2

基本启动命令

php -S <domain>:<port>

苏南大叔cd到网站代码的根目录下面,然后执行如下命令,就可以启动一个http://localhost:8000的网站服务了。

cd <www_root>/
php -S localhost:8000

苏南大叔:不使用 apche/nginx,php 命令如何启动 www 服务? - php_v
不使用 apche/nginx,php 命令如何启动 www 服务?(图4-2)

下面是相关要点:

  • php的参数-S,注意后面的值没有http://字样,而且必须有端口号。
  • 如果这里写的不是127.0.0.1本机地址,而是localhost,或者一个自定义的域名,比如my.test的话,那么就必须严格按着你填写的这个域名和端口号来访问。
  • 而且特别强调的是,千万注意端口冲突。比如80很有可能会和nginx/apache/iis冲突,9000很可能和php-fpm冲突。

设置网站代码根目录

php -S <domain>:<port> -t <www_root>/

本节的内容,增加了新的参数-t。如果不写-t参数的话,就默认当前目录就是网站的根目录,也就是说下面的这两条命令是等同的。

php -S localhost:8000

等同于

php -S localhost:8000 -t ./

苏南大叔:不使用 apche/nginx,php 命令如何启动 www 服务? - php_s
不使用 apche/nginx,php 命令如何启动 www 服务?(图4-3)

当然,如果你想给当前目录下的sub目录,单独开一个新的网站的话,命令就是:

php -S localhost:8000 -t sub/

指定php.ini

如果对于php的细节进行定制的话,就必须指定php.ini了。

php -S localhost:8000 -c php.ini

注意,这里的php.ini最好写绝对路径,比如:

php -S localhost:8002 -c D:\tools\phpstudy_pro\Extensions\php\php8.2.9nts\php.ini -t E:\test\php\

否则,这个php.ini的路径确实有歧义,是从php.exe路径开始找,还是在当前路径开始找?亦或是从代码根目录开始找?有歧义啊对不?

关键是,这个-c参数指定一个不存在的php.ini的文件名,依然也不会报错,这就非常的令人迷惑不解了。

注意事项

这里有个需要注意的问题就是,在这里的localhost127.0.0.1并不相等,并不能替换。参考下面的图片:

苏南大叔:不使用 apche/nginx,php 命令如何启动 www 服务? - 注意事项
不使用 apche/nginx,php 命令如何启动 www 服务?(图4-4)

使用127.0.0.1访问的话,会被拒绝服务。

相关链接

结论

最基本的用法就是上述这些了。但是,毕竟抛弃了大家常用的nginxapache的概念,所以,苏南大叔个人建议:拿来做简单测试还好吧,毕竟敲个命令也蛮简单的。但是拿来做生产环境的话,可就要三思了。

这种使用方式和node的使用方式实在是太相似了,在控制台中还能看到php报错信息。所以,也还是有一定的使用场景的。

更多苏南大叔的php相关经验文章,请点击这里查看:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   php