PHP5.4.0起,PHP内置了Web服务器。对本地开发是个极好的工具,便捷,无需安装WAMP、XAMP或大新那个web服务器,就能在本地调试了。

启动服务器

进入项目的根目录下,执行命令

php -S localhost:4000   #地址:监听端口

或者 直接指定网站根目录

php -S localhost:4000 -t D:\website

浏览器打开 localhost:4000,就可以进入到网站浏览应用。

如想停止PHP Web服务器,可关闭终端应用或按Ctrl+C。

配置服务器

指定初始化文件。使用专属的php初始配置文件,对内存用量、文件上传、分析或字节码缓存有特殊要求。

php -S localhost:4000 -c app/config/php/ini

路由器脚本

内置服务器无法进行路由解析、转发、重定向等,不支持.htaccess文件。因此很难使用多数流行的PHP框架中的常见的前端控制器。

使用路由器脚本弥补这个遗漏的功能。处理每个HTTP请求前,先执行这个路由器脚本。其作用跟.htaccess文件一样。

php -S localhost:4000 router.php

路由器脚本 如对图片的请求会返回相应的图片,但对HTML文件的请求会显示“Welcome to PHP”:

<?php
// router.php
if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"])) {
return false; // serve the requested resource as-is.
} else {
echo "<p>Welcome to PHP</p>";
}
?>

判断是否为内置的服务器

<?php
if(php_sapi_name() === 'cli_server'){
//PHP内置服务器
}else{
//其他Web服务器
}

缺点:不能在生产环境使用,只能本地开发使用。

  • 性能差。一次只能处理一个请求;
  • 支持少量的媒体类型;
  • 支持少量的URL重写规则。

内置的HTTP服务器【Modern PHP】的更多相关文章

  1. 现代 PHP 新特性 —— 内置的 HTTP 服务器 (转)

    转自 https://laravelacademy.org/post/4422.html 从 PHP 5.4.0 起,PHP内置了Web服务器,这对于认为需要Apache或Nginx才能预览PHP应用 ...

  2. 下载PHPDroid: 基于WebView和PHP内置HTTP服务器开发Android应用

    基于Android上的PHP(比如我打包的PHPDroid),寥寥几行PHP代码,就能实现一个支持无线局域网用浏览器访问的Android手机的Shell,用于执行命令和PHP代码.       个人在 ...

  3. PHP -S命令 PHP内置web服务器

    手册详细介绍 : http://www.php.net/manual/zh/features.commandline.webserver.php 适合本地开发  php 5.4.0起 这个内置的Web ...

  4. PHP 5.4 内置 web 服务器

    之前 OSC 翻译了一篇文章:在 Windows 上使用 PHP 5.4 内置的 Web 服务器 下面这篇文章来自外刊IT评论翻译的在 Linux 下使用 PHP 5.4 内置 Web 服务器 PHP ...

  5. 内置Web Server

    在终端输入命令:php -S localhost:8000 -t xxx(某个目录或文件) 这个内置的Web服务器主要用于本地开发使用,不可用于线上产品环境. URI请求会被发送到PHP所在的的工作目 ...

  6. 如何在Crystal框架项目中内置启动MetaQ服务?

    当Crystal框架项目中需要使用消息机制,而项目规模不大.性能要求不高时,可内置启动MetaQ服务器. 分步指南 项目引入crystal-extend-metaq模块,如下: <depende ...

  7. php CLI SAPI 内置Web Server

    PHP 5.4.0起, CLI SAPI 提供了一个内置的Web服务器. 这个内置的Web服务器主要用于本地开发使用,不可用于线上产品环境. URI请求会被发送到PHP所在的的工作目录(Working ...

  8. asp.net微信内置浏览器下Session失效

    问题记录:仅限安卓端微信内置浏览器,服务器集群设置了黏性Session,在Post请求时会强制走代理,导致出去的ip指向另一台服务器,黏性Session失效,用户状态无法保存. 目前想知道除了设置Se ...

  9. PHP本地开发利器:内置Web Server

    PHP 5.4.0起, CLI SAPI 提供了一个内置的Web服务器. 命令:php -S 这个内置的Web服务器主要用于本地开发使用,不可用于线上产品环境. URI请求会被发送到PHP所在的的工作 ...

随机推荐

  1. 关于对Enum的理解

    之前一直对枚举类型的理解存在误解,现重新学习 Enum 类型的介绍 枚举类型(Enumerated Type) 很早就出现在编程语言中,它被用来将一组类似的值包含到一种类型当中.而这种枚举类型的名称则 ...

  2. UTF-8编码

    UTF-8是UNICODE的一种变长度的编码表达方式<一般UNICODE为双字节(指UCS2)>,它由Ken Thompson于1992年创建,现在已经标准化为RFC 3629.UTF-8 ...

  3. 【扫盲】】32位和64位Windows的区别

    用户购买windows安装盘或者重新安装操作系统的时候,通常会遇到这个问题,就是不知道该如何选择使用32位操作系统和64位操作系统,有人说64位系统速度快,其实理论上确实是这样,不过具体还要根据你的个 ...

  4. 响应式下的雪碧图解决方案 - 活用background-size / background-position

    一.概述 在传统的居中布局时,我们常用background-position这个属性来进行雪碧图的定位,在减少数据量的同时,保证准确定位.在移动端使用越来越重的现在,以往的传统定位,已经无法达到目的, ...

  5. PgAdmin4连接数据库报错:Unable to connect to server: ERROR: unrecognized configuration parameter "bytea_output"

    原因: PgAdmin 4不再支持PostgreSQL 9.0 和更早的版本 我的版本是8.2.15 template1=# select version(); version ----------- ...

  6. lazy初始化和线程安全的单例模式

    1.双检锁/双重校验锁(DCL,即 double-checked locking) JDK 版本:JDK1.5 起 是否 Lazy 初始化:是 是否多线程安全:是 实现难度:较复杂 描述:这种方式采用 ...

  7. protobuf简单测试应用

    protobuf是google推出的一种数据交换协议,比较适合应用于底层服务交互,nodejs提供protobufjs包的实现,下面是一个简单的测试demo: 首先是.proto文件: package ...

  8. 秒懂String,StringBuilder与StringBuffer

    StringBuilder与StringBuffer: StringBuilder:线程不安全 StringBuffer:线程安全 当我们在字符串缓冲区被多个线程使用时,JVM不能保证StringBu ...

  9. 【转】golang的channel的几种用法

    关闭2次 ch := make(chan bool) close(ch) close(ch)  // 这样会panic的,channel不能close两次 读取的时候channel提前关闭了 ch : ...

  10. 时间复杂度为O(logN)的常用算法

    时间复杂度为O(logN)的常用算法 折半查找 /* * 折半查找 * 默认查找的数组已经排过序 */ public static int binarySearch(int[] a,int x){ i ...