很多时候我们需要简单的跑一个小demo来验证一些代码或者轮子是否可用,是否可以运行,但是配置nginx或者apache是??很麻烦的。其实PHPCLI已经提供了一个简单的测试服务器搭建完成后,我们可以直接运行它来进行一些简单的测试工作。直接启动内置服务器php-Slocalhost:8081直接使用-S命令选项,然后指定地址和端口号,我们就可以运行一个简单的PHP内置WEB服务器。默认情况下,该地址将在当前目录中找到index.php或index.html文件。当我们在浏览器中输入指定的文件时,就是在访问指定的文件。如果没有找到,则正常返回404错误。控制台会输出当前服务器的访问状态,如下图所示:这个内置的服务器和用nginx等服务器架设的应用服务器没有太大区别,包括$_SERVER的内容都可以正常获得。还可以使用include等函数加载其他文件,这意味着内置的WEB服务器可以毫无问题地运行一些框架。完全可以满足我们的测试要求。但是需要注意的是这个内置的WEB服务器是不能在生产环境中使用的。毕竟它的功能还是太简单了,并不是一个高标准的生产设备的服务器应用。指定内置服务器的运行目录我们也可以在任意目录下运行指定目录下的php代码,只需要再增加一个-t选项指定运行服务器的根目录即可。php-Slocalhost:8081-tdev-blog/php/202004/source这样我们就可以以dev-blog/php/202004/source目录为根目录运行一个测试环境服务器。使用路由脚本php-Slocalhost:8081PHP内置的WEBserver.php如果我们直接为当前服务器指定一个PHP文件,那么直接打开链接就会访问这个文件的内容,而不是去寻找index.php类文件。即使我们继续在url后台添加其他路径或其他文件名,它仍然会打开这个文件,即我们启动了一个单文件入口的应用服务器程序。就像各种框架的index.php文件一样,比如我们用这个文件做一个简单的路由分发测试:$routePages=['/testRoute2.php','/route/testRoute1.php'];if(in_array($_SERVER['REQUEST_URI'],$routePages)){包括__DIR__。$_SERVER['REQUEST_URI'];}else{print_r($_SERVER);}//route/testRoute1.phpecho"HelloRoute1!";//testRoute2.phpecho"HelloRoute2!";两个测试文件只是简单地输出一段文字来区分分别加载的两个文件。上面代码的意思是,当我们访问定义的两个路由路径时,会加载相应的文件,访问其他路径时会打印当前服务器的$_SERVER信息。测试代码:https://github.com/zhangyue0503/dev-blog/blob/master/php/202004/source/PHP%E7%9A%84%E5%86%85%E7%BD%AEWEB%E6%9C%8D%E5%8A%A1%E5%99%A8.php参考文档:https://www.php.net/manual/zh/features.commandline.webserver.php===========各媒体平台均可搜索【硬核项目经理】
