在不少时候,咱们须要简单的运行一个小 demo 来验证一些代码或者轮子是否可用,是否能够运行起来,可是去配 nginx 或者 apache 都很麻烦,其实,PHP CLI 已经提供了一个简单的测试服务器,咱们直接就能够运行起来进行简单的一些测试工做。php
php -S localhost:8081
直接使用 -S 命令选项,而后指定地址及端口号,咱们就能够运行起来一个 PHP 内置的简易WEB服务器。默认状况下,这个地址会找当前目录下的 index.php 或 index.html 文件。当咱们在浏览器输入指定的文件时,就是访问指定的文件,若是都没有找到会正常的返回404错误。html
而控制台会输出当前服务器的访问状况,以下图所示:nginx
这个内置服务器和用 nginx 等服务器搭起来的应用服务器本质上没有太大的区别,包括 $_SERVER 之类的内容均可以正常获取到,也能够正常使用 include 等功能加载其余文件,也就是说这个内置WEB服务器运行一些框架也是没有问题的。它是能够彻底知足咱们的测试要求的。可是须要注意的是,这个内置WEB服务器不能用于生产环境。毕竟它的功能仍是太简单,不是一个生产配备的高规格服务器应用。git
咱们也能够在任何目录去运行指定目录的php代码,只须要再增长一个 -t 选项来指明要运行起服务器的根目录便可。github
php -S localhost:8081 -t dev-blog/php/202004/source
这样咱们就能够运行起来一个以 dev-blog/php/202004/source 目录为根目录的测试环境服务器。web
php -S localhost:8081 PHP的内置WEB服务器.php
若是咱们给当前服务器直接指定了一个PHP文件,那么直接打开连接就会访问的是这个文件的内容,而不是去找 index.php 之类的文件。即便咱们继续给 URL 后台增长其余路径或者其余文件名,它依然会打开的是这个文件,也就是说,咱们启动了一个单文件入口的应用服务器程序。就像各类框架的 index.php 文件同样,好比咱们利用这个文件作一个简单的路由分发测试:apache
$routePages = [ '/testRoute2.php', '/route/testRoute1.php' ]; if(in_array($_SERVER['REQUEST_URI'], $routePages)){ include __DIR__ . $_SERVER['REQUEST_URI']; }else{ print_r($_SERVER); }
// route/testRoute1.php echo "Hello Route1!"; // testRoute2.php echo "Hello Route2!";
两个测试文件只是简单的输出了一段文字用于区别分别加载了两个文件。上述代码的意思是咱们访问定义好的两个路由路径时,就会加载对应的文件,访问其余路径则会打印当前服务器的 $_SERVER 信息。浏览器
参考文档:
https://www.php.net/manual/zh/features.commandline.webserver.php框架
===========
各自媒体平台都可搜索【硬核项目经理】