之前 OSC 翻译了一篇文章:在 Windows 上使用 PHP 5.4 内置的 Web 服务器

下面这篇文章来自外刊IT评论翻译的在 Linux 下使用 PHP 5.4 内置 Web 服务器

PHP是一种脚本语言,它需要PHP解释器来分析运行PHP文件。当把PHP做为CGI服务Web请求时,它需要被嵌入到某种Web服务器里,最常 见的是集成到Apache或IIS里,这就是说,在使用PHP前,你需要安装Apache或IIS,并且正确的配置它们和PHP集成的参数。虽然这种配置 已经很规范,文档非常丰富,但我们还是经常在安装Apache和PHP集成时遇到问题,而且,有时候我们只想测试一个简单的PHP特征,不想就为此安装、 启动Apache服务。

但据官方文档上说,这个内置的Web服务器只是提供开发测试使用,不推荐使用中生产环境中。因为这个服务器接受处理请求时顺序执行的,不能并发处理。

这个内置的web服务器使用起来非常的方便,你只需要执行下面的命令:

?
1
$ php -S localhost:8000

然后就可以访问了。这样启动后,默认的web服务目录是执行命令的当前目录,如果不想使用当前目录,你需要使用 -t 参数来指定。

例 #1 启动Web服务器

?
1
2
$ cd ~/public_html
$ php -S localhost:8000

终端输出信息:

?
1
2
3
4
PHP 5.4.0 Development Server started at Thu Jul 21 10:43:28 2011
Listening on localhost:8000
Document root is /home/me/public_html
Press Ctrl-C to quit

当请求了 http://localhost:8000/ 和 http://localhost:8000/myscript.html 地址后,终端输出类似如下的信息:

?
1
2
3
4
5
6
7
8
9
PHP 5.4.0 Development Server started at Thu Jul 21 10:43:28 2011
Listening on localhost:8000
Document root is /home/me/public_html
Press Ctrl-C to quit.
[Thu Jul 21 10:48:48 2011] ::1:39144 GET /favicon.ico - Request read
[Thu Jul 21 10:48:50 2011] ::1:39146 GET / - Request read
[Thu Jul 21 10:48:50 2011] ::1:39147 GET /favicon.ico - Request read
[Thu Jul 21 10:48:52 2011] ::1:39148 GET /myscript.html - Request read
[Thu Jul 21 10:48:52 2011] ::1:39149 GET /favicon.ico - Request read

例 #2 启动web服务器时指定文档的根目录

?
1
2
$ cd ~/public_html
$ php -S localhost:8000 -t foo/

终端显示信息:

?
1
2
3
4
PHP 5.4.0 Development Server started at Thu Jul 21 10:50:26 2011
Listening on localhost:8000
Document root is /home/me/public_html/foo
Press Ctrl-C to quit

如果你在启动命令行后面附加一个php脚本文件,那这个文件将会被当成一个“路由器”脚本。这个脚本将负责所有的HTTP请求,如果这个脚本执行时返回FALSE,则被请求的资源会正常的返回。如果不是FALSE,浏览里显示的将会是这个脚本产生的内容。

例 #3 使用路由器脚本

在这个例子中,对图片的请求会返回相应的图片,但对HTML文件的请求会显示“Welcome to PHP”:

?
1
2
3
4
5
6
7
8
<?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>";
}
?>

执行:

?
1
$ php -S localhost:8000 router.php

例 #4 判断是否是在使用内置web服务器

通过程序判断来调整同一个PHP路由器脚本在内置Web服务器中和在生产服务器中的不同行为:

?
1
2
3
4
5
6
7
<?php
// router.php
if (php_sapi_name() == 'cli-server') {
/* route static assets and return false */
}
/* go on with normal index.php operations */
?>

执行:

?
1
$ php -S localhost:8000 router.php

这个内置的web服务器能识别一些标准的MIME类型资源,它们的扩展有:.css, .gif, .htm, .html, .jpe, .jpeg, .jpg, .js, .png, .svg, and .txt。对.htm 和 .svg 扩展到支持是在PHP 5.4.4之后才支持的。

例 #5 处理不支持的文件类型

如果你希望这个Web服务器能够正确的处理不被支持的MIME文件类型,这样做:

?
1
2
3
4
5
6
7
8
9
10
11
<?php
// router.php
$path = pathinfo($_SERVER["SCRIPT_FILENAME"]);
if ($path["extension"] == "ogg") {
header("Content-Type: video/ogg");
readfile($_SERVER["SCRIPT_FILENAME"]);
}
else {
return FALSE;
}
?>

执行:

?
1
$ php -S localhost:8000 router.php

如果你希望能远程的访问这个内置的web服务器,你的启动命令需要改成下面这样:

例 #6 远程访问这个内置Web服务器

?
1
$ php -S 0.0.0.0:8000

这样你就可以通过 8000 端口远程的访问这个内置的web服务器了。

详见:http://www.oschina.net/question/12_70049

转载于:https://www.cnblogs.com/wish123/p/3941510.html

PHP 5.4 内置 web 服务器相关推荐

  1. 浅谈:Spring Boot原理分析,切换内置web服务器,SpringBoot监听项目(使用springboot-admin),将springboot的项目打成war包

    浅谈:Spring Boot原理分析(更多细节解释在代码注释中) 通过@EnableAutoConfiguration注解加载Springboot内置的自动初始化类(加载什么类是配置在spring.f ...

  2. 终端命令运行php文件路径,PHP -S命令 PHP内置web服务器

    摘要:PHP 5.4.0起, CLI SAPI 提供了一个内置的Web服务器.这个内置的Web服务器主要用于本地开发使用,不可用于线上产品环境.URI请求会被发... PHP 5.4.0起, CLI ...

  3. php如何启动内置web服务器

    前言: PHP从5.4开始,就提供了一个内置的web服务器. 当然这个主要是用来做本地的开发用的. 不能用于线上环境. 现在我就介绍一下这个工具如何使用. 前提: php已经加入到本地电脑的环境变量中 ...

  4. java 内置web服务器_Webstorm 2016内置web服务器配置

    Javascript之匿名函数 分析: 1.所谓匿名函数,从字面意思理解,就是没有名字的函数,js 用()来代替(注意,是英文状态下的括号) 2.定义形式: function (){ //to add ...

  5. php 使用内置web服务器

    执行 : php -S localhost:8234 -t ./ -t 后面指定目录, 不加-t 参数则为当前目录, 访问时优先打开 index.php index.html 参考 http://ph ...

  6. php web server setup,PHP本地开发利器:内置Web Server

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

  7. PHP之内置web服务器

    首发于:我的博客 前言 PHP从5.4开始,就提供了一个内置的web服务器. 这个主要是用来做本地的开发用的.不能用于线上环境.现在我就介绍一下这个工具如何使用. 基础应用 首先我们假定项目目录是/h ...

  8. 使用Synology群晖内置web station和榴莲壳发布自己的网站(三)如何访问自己服务器里的网页

    使用Synology群晖内置web station和榴莲壳发布自己的网站(三)如何访问自己服务器里的网页 配置 榴莲壳的申请 榴莲壳设置 Web Station完成最后一步设置 internet顺利访 ...

  9. 内嵌WEB服务器加载原理

    内嵌WEB服务器加载原理 理解里面的tomcat是如何启动的 Startup.bat Server.start() 1,概述 我们在使用springboot项目的时候并没有使用外部的tomcat,那么 ...

  10. 使用Synology群晖内置web station和榴莲壳发布自己的网站(二)设置Web Station

    使用Synology群晖内置web station和榴莲壳发布自己的网站(二)设置Web Station 配置 设置群晖Web Station 打开Web Station设置 安装Apache HTT ...

最新文章

  1. PHP整理笔记八正则表达式
  2. 学习记录(一)之h5_canvas
  3. docker 启动成功但无法访问_docker nginx 运行后无法访问的问题解决
  4. ASP.NET 安全认证
  5. 团队DevOps实践之一
  6. 【jQuery笔记Part1】08-jQuery操作css-获取设置样式
  7. Skin++ 使用教程(VC软件外观美化工具)
  8. Python 网页爬虫
  9. C++ WindowsAPI 教程:MessageBox函数详解(原创)
  10. java json.stringify_浅谈 JSON.stringify 方法
  11. 蓝宝石rx470d原版bios_狼神矿卡烤机89°C!强刷蓝宝石RX570超白金显卡BIOS降温75°教程...
  12. 波利亚-怎样解题的思考
  13. git顏色所代表的意义
  14. Ps简单的墨笔画制作
  15. 『光纤交换机级联设置 』光纤跳线及光纤交换机端口级联类型
  16. 16.Linux环境搭建虚拟网络
  17. 数据脱敏 Data Masking
  18. C++中表示正无穷与负无穷
  19. 选择java版本_新手上路之如何选择Java版本
  20. 小成开发日记---利用Qt/C++实现基于Udp协议的网络聊天室(分服务端和客户端的开发【轻聊v1.0.1】)

热门文章

  1. pycharm windows 如何导入github仓库的项目代码
  2. kubernetes视频教程笔记 (13)-容器start、stop、相位
  3. 数据结构和算法——八种常用的排序算法------归并排序
  4. JAVA中map删除键值对_以有效的方式从Map中删除多个键?
  5. override java field_JAVA方法的重载(overload)和覆盖(override)
  6. MRTK 当进入某个物体时调用的函数
  7. Linux 杀死stuck线程,如何中断weblogic中stuck thread
  8. php多次登录失败,PHPCMS登录后台失败次数过多解决办法
  9. 我就不信发不出去,工 作 时候用的,来啊=》模板下载
  10. homebrew安装及常用命令