PHP5.4起内置web服务器使用方法


Posted in PHP onAugust 09, 2016

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

PHP5.4起内置web服务器使用方法

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

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

$ php -S localhost:8000

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

例 #1 启动Web服务器

$ cd ~/public_html
$ php -S localhost:8000
终端输出信息:

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 地址后,终端输出类似如下的信息:

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服务器时指定文档的根目录

$ cd ~/public_html
$ php -S localhost:8000 -t foo/
终端显示信息:

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”:

<?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 -S localhost:8000 router.php
例 #4 判断是否是在使用内置web服务器

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

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

$ 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文件类型,这样做:

<?php
// router.php
$path = pathinfo($_SERVER["SCRIPT_FILENAME"]);
if ($path["extension"] == "ogg") {
header("Content-Type: video/ogg");
readfile($_SERVER["SCRIPT_FILENAME"]);
}
else {
return FALSE;
}
?>

$ php -S localhost:8000 router.php

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

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

$ php -S 0.0.0.0:8000
这样你就可以通过 8000 端口远程的访问这个内置的web服务器了

下面是其它网友的补充

PHP从5.4的版本开始已经有了内置 server。这里是在win10 平台下开启server服务:

1.首先在win 平台下安装好PHP > 5.4.在C:\php\pear目录下建立 router.php,文件,并写一个echo 输出。

2.利用管理员进入 powerShell,输入一下命令

php -S localhost:8000 router.php
回车执行返回了:

PHP 5.4.45 Development Server started at Tue Nov 07 16:32:56 2017
Listening on http://localhost:8000
Document root is C:\WINDOWS\system32
Press Ctrl-C to quit.
3.默认情况下,router.php文件的目录地址为:C:\php\pear

4.在浏览器输入

http://localhost:8000

PHP5.4起内置web服务器使用方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP.MVC的模板标签系统(五)
Sep 05 PHP
PHP 数组入门教程小结
May 20 PHP
PHP 批量删除 sql语句
Jun 05 PHP
file_get_contents获取不到网页内容的解决方法
Mar 07 PHP
CI框架安全类Security.php源码分析
Nov 04 PHP
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
Dec 09 PHP
php面向对象编程self和static的区别
May 08 PHP
PHP 读取大文件并显示的简单实例(推荐)
Aug 12 PHP
PHP  Yii清理缓存的实现方法
Nov 10 PHP
php生成二维码不保存服务器还有下载功能的实现代码
Aug 09 PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
Aug 16 PHP
laravel csrf排除路由,禁止,关闭指定路由的例子
Oct 21 PHP
PHP Filter过滤器全面解析
Aug 09 #PHP
学习PHP Cookie处理函数
Aug 09 #PHP
利用PHP命令行模式采集股票趋势信息
Aug 09 #PHP
PHP怎样用正则抓取页面中的网址
Aug 09 #PHP
php阳历转农历优化版
Aug 08 #PHP
php+jQuery+Ajax简单实现页面异步刷新
Aug 08 #PHP
常用PHP数组排序函数归纳
Aug 08 #PHP
You might like
PHP mcrypt可逆加密算法分析
2011/07/19 PHP
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
2012/10/24 PHP
利用php下载xls文件(自己动手写的)
2014/04/18 PHP
完善CodeIgniter在IDE中代码提示功能的方法
2014/07/19 PHP
php常用数学函数汇总
2014/11/21 PHP
Symfony2在Nginx下的配置方法图文教程
2016/02/04 PHP
PHP手机短信验证码实现流程详解
2018/05/17 PHP
dojo 之基础篇(二)之从服务器读取数据
2007/03/24 Javascript
javascript 冒号 使用说明
2009/06/06 Javascript
Colortip基于jquery的信息提示框插件在IE6下面的显示问题修正方法
2010/12/06 Javascript
使用javascript实现ListBox左右全选,单选,多选,全请
2013/11/07 Javascript
javascript常用代码段搜集
2014/12/04 Javascript
node.js中的events.emitter.once方法使用说明
2014/12/10 Javascript
js实现兼容性好的微软官网导航下拉菜单效果
2015/09/07 Javascript
JavaScript的History API使搜索引擎抓取AJAX内容
2015/12/07 Javascript
JS实现Select的option上下移动的方法
2016/03/01 Javascript
jquery拖动层效果插件用法实例分析(附demo源码)
2016/04/28 Javascript
原生JavaScript编写canvas版的连连看游戏
2016/05/29 Javascript
react开发教程之React 组件之间的通信方式
2017/08/12 Javascript
angularjs 获取默认选中的单选按钮的value方法
2018/02/28 Javascript
微信小程序实现的自定义分享功能示例
2019/02/12 Javascript
Element-ui中元素滚动时el-option超出元素区域的问题
2019/05/30 Javascript
微信小程序点击顶部导航栏切换样式代码实例
2019/11/12 Javascript
Ant Design moment对象和字符串之间的相互转化教程
2020/10/27 Javascript
[37:45]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS Orenda
2014/05/22 DOTA
Python 实现一个颜色色值转换的小工具
2016/12/06 Python
Python正则表达式非贪婪、多行匹配功能示例
2017/08/08 Python
Python爬虫常用小技巧之设置代理IP
2018/09/13 Python
Python面向对象基础入门之设置对象属性
2018/12/11 Python
地图可视化神器kepler.gl python接口的使用方法
2020/12/22 Python
matplotlib部件之套索Lasso的使用
2021/02/24 Python
关于h5中的fetch方法解读(小结)
2017/11/15 HTML / CSS
德国机场停车位比较和预订网站:Ich-parke-billiger
2018/01/08 全球购物
人力资源管理专业毕业生推荐信
2013/11/07 职场文书
餐饮加盟计划书
2014/01/10 职场文书
大学校园毕业自我鉴定
2014/01/15 职场文书