PHP 5.4 内置 web 服务器
之前 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 服务器相关推荐
- 浅谈:Spring Boot原理分析,切换内置web服务器,SpringBoot监听项目(使用springboot-admin),将springboot的项目打成war包
浅谈:Spring Boot原理分析(更多细节解释在代码注释中) 通过@EnableAutoConfiguration注解加载Springboot内置的自动初始化类(加载什么类是配置在spring.f ...
- 终端命令运行php文件路径,PHP -S命令 PHP内置web服务器
摘要:PHP 5.4.0起, CLI SAPI 提供了一个内置的Web服务器.这个内置的Web服务器主要用于本地开发使用,不可用于线上产品环境.URI请求会被发... PHP 5.4.0起, CLI ...
- php如何启动内置web服务器
前言: PHP从5.4开始,就提供了一个内置的web服务器. 当然这个主要是用来做本地的开发用的. 不能用于线上环境. 现在我就介绍一下这个工具如何使用. 前提: php已经加入到本地电脑的环境变量中 ...
- java 内置web服务器_Webstorm 2016内置web服务器配置
Javascript之匿名函数 分析: 1.所谓匿名函数,从字面意思理解,就是没有名字的函数,js 用()来代替(注意,是英文状态下的括号) 2.定义形式: function (){ //to add ...
- php 使用内置web服务器
执行 : php -S localhost:8234 -t ./ -t 后面指定目录, 不加-t 参数则为当前目录, 访问时优先打开 index.php index.html 参考 http://ph ...
- php web server setup,PHP本地开发利器:内置Web Server
PHP 5.4.0起, CLI SAPI 提供了一个内置的Web服务器. 命令:php -S 这个内置的Web服务器主要用于本地开发使用,不可用于线上产品环境. URI请求会被发送到PHP所在的的工作 ...
- PHP之内置web服务器
首发于:我的博客 前言 PHP从5.4开始,就提供了一个内置的web服务器. 这个主要是用来做本地的开发用的.不能用于线上环境.现在我就介绍一下这个工具如何使用. 基础应用 首先我们假定项目目录是/h ...
- 使用Synology群晖内置web station和榴莲壳发布自己的网站(三)如何访问自己服务器里的网页
使用Synology群晖内置web station和榴莲壳发布自己的网站(三)如何访问自己服务器里的网页 配置 榴莲壳的申请 榴莲壳设置 Web Station完成最后一步设置 internet顺利访 ...
- 内嵌WEB服务器加载原理
内嵌WEB服务器加载原理 理解里面的tomcat是如何启动的 Startup.bat Server.start() 1,概述 我们在使用springboot项目的时候并没有使用外部的tomcat,那么 ...
- 使用Synology群晖内置web station和榴莲壳发布自己的网站(二)设置Web Station
使用Synology群晖内置web station和榴莲壳发布自己的网站(二)设置Web Station 配置 设置群晖Web Station 打开Web Station设置 安装Apache HTT ...
最新文章
- PHP整理笔记八正则表达式
- 学习记录(一)之h5_canvas
- docker 启动成功但无法访问_docker nginx 运行后无法访问的问题解决
- ASP.NET 安全认证
- 团队DevOps实践之一
- 【jQuery笔记Part1】08-jQuery操作css-获取设置样式
- Skin++ 使用教程(VC软件外观美化工具)
- Python 网页爬虫
- C++ WindowsAPI 教程:MessageBox函数详解(原创)
- java json.stringify_浅谈 JSON.stringify 方法
- 蓝宝石rx470d原版bios_狼神矿卡烤机89°C!强刷蓝宝石RX570超白金显卡BIOS降温75°教程...
- 波利亚-怎样解题的思考
- git顏色所代表的意义
- Ps简单的墨笔画制作
- 『光纤交换机级联设置 』光纤跳线及光纤交换机端口级联类型
- 16.Linux环境搭建虚拟网络
- 数据脱敏 Data Masking
- C++中表示正无穷与负无穷
- 选择java版本_新手上路之如何选择Java版本
- 小成开发日记---利用Qt/C++实现基于Udp协议的网络聊天室(分服务端和客户端的开发【轻聊v1.0.1】)
热门文章
- pycharm windows 如何导入github仓库的项目代码
- kubernetes视频教程笔记 (13)-容器start、stop、相位
- 数据结构和算法——八种常用的排序算法------归并排序
- JAVA中map删除键值对_以有效的方式从Map中删除多个键?
- override java field_JAVA方法的重载(overload)和覆盖(override)
- MRTK 当进入某个物体时调用的函数
- Linux 杀死stuck线程,如何中断weblogic中stuck thread
- php多次登录失败,PHPCMS登录后台失败次数过多解决办法
- 我就不信发不出去,工 作 时候用的,来啊=》模板下载
- homebrew安装及常用命令