主页 > 知识库 > PHP 内置WEB服务器的简单使用

PHP 内置WEB服务器的简单使用

热门标签:Mysql连接数设置 银行业务 Linux服务器 电子围栏 服务器配置 科大讯飞语音识别系统 团购网站 阿里云

在很多时候,我们需要简单的运行一个小 demo 来验证一些代码或者轮子是否可用,是否可以运行起来,但是去配 nginx 或者 apache 都很麻烦,其实,PHP CLI 已经提供了一个简单的测试服务器,我们直接就可以运行起来进行简单的一些测试工作。

直接启动一个内置服务器

php -S localhost:8081

直接使用 -S 命令选项,然后指定地址及端口号,我们就可以运行起来一个 PHP 内置的简易WEB服务器。默认情况下,这个地址会找当前目录下的 index.php 或 index.html 文件。当我们在浏览器输入指定的文件时,就是访问指定的文件,如果都没有找到会正常的返回404错误。

而控制台会输出当前服务器的访问情况,如下图所示:

这个内置服务器和用 nginx 等服务器搭起来的应用服务器本质上没有太大的区别,包括 $_SERVER 之类的内容都可以正常获取到,也可以正常使用 include 等功能加载其他文件,也就是说这个内置WEB服务器运行一些框架也是没有问题的。它是可以完全满足我们的测试要求的。但是需要注意的是,这个内置WEB服务器不能用于生产环境。毕竟它的功能还是太简单,不是一个生产配备的高规格服务器应用。

指定内置服务器的运行目录

我们也可以在任何目录去运行指定目录的php代码,只需要再增加一个 -t 选项来指明要运行起服务器的根目录即可。

php -S localhost:8081 -t dev-blog/php/202004/source

这样我们就可以运行起来一个以 dev-blog/php/202004/source 目录为根目录的测试环境服务器。

使用路由脚本

php -S localhost:8081 PHP的内置WEB服务器.php

如果我们给当前服务器直接指定了一个PHP文件,那么直接打开链接就会访问的是这个文件的内容,而不是去找 index.php 之类的文件。即使我们继续给 URL 后台增加其他路径或者其他文件名,它依然会打开的是这个文件,也就是说,我们启动了一个单文件入口的应用服务器程序。就像各种框架的 index.php 文件一样,比如我们利用这个文件做一个简单的路由分发测试:

$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 信息。

测试代码: github.com/zhangyue050…

参考文档: www.php.net/manual/zh/f…

以上就是PHP 内置WEB服务器的简单使用的详细内容,更多关于PHP 内置服务器的使用的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
  • PHP5.4起内置web服务器使用方法
  • phpstorm远程连接服务器并实时更新发布代码(thinkphp6.0.7)
  • PhpStorm连接服务器并实现自动上传功能
  • PHP使用swoole编写简单的echo服务器示例
  • php实现的简单多进程服务器类完整示例
  • 在phpstudy集成环境下的nginx服务器下配置url重写
  • php服务器的系统详解
  • Windows服务器中PHP如何安装redis扩展
  • PHP如何将图片文件上传到另外一台服务器上
  • 微信小程序上传图片到php服务器的方法

标签:蚌埠 广元 衢州 萍乡 枣庄 衡水 江苏 大理

巨人网络通讯声明:本文标题《PHP 内置WEB服务器的简单使用》,本文关键词  ;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 收缩
    • 微信客服
    • 微信二维码
    • 电话咨询

    • 400-1100-266