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 MYSQL中插入当前时间
Apr 06 PHP
php与php MySQL 之间的关系
Jul 17 PHP
php 获取可变函数参数的函数
Aug 26 PHP
PHP gbk环境下json_dencode传送来的汉字
Nov 13 PHP
php中如何使对象可以像数组一样进行foreach循环
Aug 09 PHP
php验证是否是md5编码的简单代码
Apr 01 PHP
Win2003+apache+PHP+SqlServer2008 配置生产环境
Jul 29 PHP
destoon文章模块调用企业会员资料的方法
Aug 22 PHP
详解HTTP Cookie状态管理机制
Jan 14 PHP
PHP实现QQ快速登录的方法
Sep 28 PHP
2017年最好用的9个php开发工具推荐(超好用)
Oct 23 PHP
PhpStorm+xdebug+postman调试技巧分享
Sep 15 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批量上传的实现代码
2013/06/09 PHP
php中fgetcsv()函数用法实例
2014/11/28 PHP
PHP+jquery+CSS制作头像登录窗(仿QQ登陆)
2016/10/20 PHP
JScript中的undefined和&quot;undefined&quot;的区别
2007/03/08 Javascript
jquery animate 动画效果使用说明
2009/11/04 Javascript
js为数字添加逗号并格式化数字的代码
2013/08/23 Javascript
jquery判断元素是否隐藏的多种方法
2014/05/06 Javascript
JavaScript实现将数组中所有元素连接成一个字符串的方法
2015/04/06 Javascript
javascript正则表达式中的replace方法详解
2015/04/20 Javascript
JS使用正则表达式除去字符串中重复字符的方法
2015/11/05 Javascript
javascript实现滑动解锁功能
2017/03/22 Javascript
Angularjs中使用指令绑定点击事件的方法
2017/03/30 Javascript
详解Vue.js使用Swiper.js在iOS
2018/09/10 Javascript
nodejs微信开发之接入指南
2019/03/17 NodeJs
浅谈vue加载优化策略
2019/03/19 Javascript
Vue模板语法中数据绑定的实例代码
2019/05/17 Javascript
vue.js实现图书管理功能
2019/09/24 Javascript
Js图片点击切换轮播实现代码
2020/07/27 Javascript
Vant 中的Toast设置全局的延迟时间操作
2020/11/04 Javascript
三剑客:offset、client和scroll还傻傻分不清?
2020/12/04 Javascript
[03:59]5分钟带你了解什么是DOTA2(第二期)
2017/02/07 DOTA
使用C语言来扩展Python程序和Zope服务器的教程
2015/04/14 Python
python多行字符串拼接使用小括号的方法
2020/03/19 Python
Python3 使用cookiejar管理cookie的方法
2018/12/28 Python
浅析Python 实现一个自动化翻译和替换的工具
2019/04/14 Python
Python实现将元组中的元素作为参数传入函数的操作
2020/06/05 Python
python打开文件的方式有哪些
2020/06/29 Python
Python常用扩展插件使用教程解析
2020/11/02 Python
Html5 Canvas 实现一个“刮刮乐”游戏
2019/09/05 HTML / CSS
加拿大健康、婴儿和美容产品在线购物:Well.ca
2016/11/30 全球购物
手工制作的意大利太阳镜和光学元件:Illesteva
2019/01/19 全球购物
运动会入场词60字
2014/02/15 职场文书
采购类个人求职的自我评价
2014/02/18 职场文书
现场活动策划方案
2014/08/22 职场文书
浅谈Redis 中的过期删除策略和内存淘汰机制
2022/04/03 Redis
Windows Server 版本 20H2 于 8 月 9 日停止支持,Win10 版本 21H1 将于 12 月结束支
2022/07/23 数码科技