您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > php

PHP 内置 Web 服务器

时间:2022-01-07 10:42:05  来源:  作者:木偶跳舞

php 提供了一个内置的Web服务器。

在很多时候,当我们要简单的运行一个小 demo 来验证一些代码或者轮子是否可用,是否可以运行起来时,去配置 Nginx 或者 Apache 服务器都很麻烦。此时,使用PHP的内置服务器就可以将代码运行起来进行简单的一些测试工作。

这个内置的Web服务器主要用于本地开发使用,不可用于线上生产环境。

用法

$ php -S localhost:2333 [-t html] [-c php.ini] [router.php]

参数说明:

-S 指定服务器的 Domain/IP 和端口
-t 指定根目录,默认为当前目录
-c 指定配置文件
router.php 自定义路由,即入口文件

启动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

启动时指定运行目录(根目录)

URI请求会被发送到PHP所在的的工作目录进行处理,除非你使用了-t参数来自定义不同的目录。

$ 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配置

应用常常需要使用专属的PHP配置文件,尤其是对内存使用、文件上传、分析或对字节码缓存有特殊要求时,一定要单独配置,我们可以使用 -c 选项,让PHP内置的服务器使用指定的配置文件:

php -S localhost:8000 -c App/config/php.ini

使用路由(Router)脚本

如果请求未指定执行哪个PHP文件,则默认执行目录内的index.php 或者 index.html。如果这两个文件都不存在,服务器会返回404错误。

当你在命令行启动这个Web Server时,如果指定了一个PHP文件,则这个文件会作为一个“路由”脚本,意味着每次请求都会先执行这个脚本。如果这个脚本返回 false ,那么直接返回请求的文件(例如请求静态文件不作任何处理)。否则会把输出返回到浏览器。

如下示例: 请求图片直接显示图片,请求HTML则显示“Welcome to PHP”

<?php
// router.php
if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"]))
    return false;    // 直接返回请求的文件
else { 
    echo "<p>Welcome to PHP</p>";
}
?>
$ php -S localhost:8000 router.php

执行之后终端显示:

PHP 5.4.0 Development Server started at Thu Jul 21 10:53:19 2011
Listening on localhost:8000
Document root is /home/me/public_html
Press Ctrl-C to quit.
[Thu Jul 21 10:53:45 2011] ::1:55801 GET /mylogo.jpg - Request read
[Thu Jul 21 10:53:52 2011] ::1:55803 GET /abc.html - Request read
[Thu Jul 21 10:53:52 2011] ::1:55804 GET /favicon.ico - Request read

检查当前请求是否使用的PHP内置服务器

如在PHP内置服务器驱动和生产环境服务器驱动时共用一个路由脚本文件

<?php
// router.php
if (php_sapi_name() == 'cli-server') {
    /* 路由静态资源返回 false */
}
/* 继续正常index.php操作 */
?>
$ php -S localhost:8000 router.php

允许从远程计算机访问CLI Web服务器

您可以通过以下方式使任何IP都可以通过端口8000访问该Web服务器:

$ php -S 0.0.0.0:8000

其实像Laravel框架的 php artisan serve 命令启动服务也是用的上述php内置服务器。



Tags:PHP   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
概述php8 (php8 >= 8.1.0 ) 中新增了纤程特性,官方文档地址如下:https://www.php.net/manual/zh/language.fibers.php本文将讲解这个新特性的一些简单使用基本概念摘自官方文...【详细内容】
2022-10-18  Tags: PHP  点击:(3)  评论:(0)  加入收藏
如何搭建IIS+MySQL+PHP环境教程方法首先下载php-5.2.0-win32.zip,mysql-noinstall-5.0.22-win32.zip和phpMyAdmin-2.9.1.1-all-languages.zip。这三个文件的下载地址可以在百...【详细内容】
2022-09-27  Tags: PHP  点击:(39)  评论:(0)  加入收藏
php(2 部分系列) 1我用 50 行代码写了 twig2php的活动框架 docker-compose.yml此配置仅包含一个服务并公开一个端口以通过浏览器访问容器。这个文件就不用多说了。 version: &...【详细内容】
2022-09-26  Tags: PHP  点击:(19)  评论:(0)  加入收藏
大家好啊,我是测评君,欢迎来到web测评。 本期给大家带来一套php开发的FastAdmin通用后台开发框架。运行环境 服务器宝塔面板 PHP 7.2 Mysql 5.6及以上版本 Linux Centos7以上P...【详细内容】
2022-09-24  Tags: PHP  点击:(27)  评论:(0)  加入收藏
PHP安全特性1-is_numeric()类型的转换缺陷 验证函数是否为数字的函数缺陷:当不是数字的字符串与数字互相比较,is_numeric()会自动的先把非数字型的数转换成数字,在进行比较。利用...【详细内容】
2022-09-20  Tags: PHP  点击:(1)  评论:(0)  加入收藏
今天讲一段情史,是关于世界上最好的编程语言PHP和Facebook的感情经历。 恋爱PHP能和Facebook谈恋爱,主要归功于创始人扎克伯格。小扎这个哈佛的学生,很不安分,鬼点子很多,很喜欢...【详细内容】
2022-09-19  Tags: PHP  点击:(25)  评论:(0)  加入收藏
CakePHP 是一个运用了诸如 ActiveRecord、Association Data Mapping、Front Controller 和 MVC(model&ndash;view&ndash;controller) 等著名设计模式的开源 Web 框架。CakePHP...【详细内容】
2022-08-30  Tags: PHP  点击:(62)  评论:(0)  加入收藏
0x01 前言最近很多家厂商都陆续开放了自己的Webshell检测引擎,并且公开接口,邀请众安全研究员参加尝试bypass检测引擎,并且给予奖励,我也参加了几场类似的活动,有ASRC的伏魔计划,...【详细内容】
2022-08-07  Tags: PHP  点击:(70)  评论:(0)  加入收藏
1.用微信自带的接口生成一个零时二维码加上一个key 标识凭证微信公众号零时二维码接口2.用户使用微信扫描跳转到公众号页面时候触发事件推送,判断MsgType=》event(scan & subs...【详细内容】
2022-08-03  Tags: PHP  点击:(65)  评论:(0)  加入收藏
功能要求隐式数据类型转换演示。实例代码<!doctype html><html><head><meta charset="utf-8"><title>隐式类型转换</title></head><body><?php//隐式类型转换$a = 10;$b = "...【详细内容】
2022-08-03  Tags: PHP  点击:(63)  评论:(0)  加入收藏
▌简易百科推荐
概述php8 (php8 >= 8.1.0 ) 中新增了纤程特性,官方文档地址如下:https://www.php.net/manual/zh/language.fibers.php本文将讲解这个新特性的一些简单使用基本概念摘自官方文...【详细内容】
2022-10-18  思跃喵  今日头条  Tags:PHP8   点击:(3)  评论:(0)  加入收藏
前言:Unity3D,相信很多人都知道是用来做游戏的。网上也有很多这类视频的教程,我也试着学习过。但是当要实现多人实时对战的教例比较少,而用 PHP 来做 Unity3d 的服务器端的就更...【详细内容】
2022-10-13  北桥苏  今日头条  Tags:unity3D   点击:(10)  评论:(0)  加入收藏
php(2 部分系列) 1我用 50 行代码写了 twig2php的活动框架 docker-compose.yml此配置仅包含一个服务并公开一个端口以通过浏览器访问容器。这个文件就不用多说了。 version: &...【详细内容】
2022-09-26  qaseven   网易号  Tags:Php   点击:(19)  评论:(0)  加入收藏
大家好啊,我是测评君,欢迎来到web测评。 本期给大家带来一套php开发的FastAdmin通用后台开发框架。运行环境 服务器宝塔面板 PHP 7.2 Mysql 5.6及以上版本 Linux Centos7以上P...【详细内容】
2022-09-24  web测评  今日头条  Tags:开发框架   点击:(27)  评论:(0)  加入收藏
PHP安全特性1-is_numeric()类型的转换缺陷 验证函数是否为数字的函数缺陷:当不是数字的字符串与数字互相比较,is_numeric()会自动的先把非数字型的数转换成数字,在进行比较。利用...【详细内容】
2022-09-20  网络安全菜鸟    Tags:PHP   点击:(1)  评论:(0)  加入收藏
今天讲一段情史,是关于世界上最好的编程语言PHP和Facebook的感情经历。 恋爱PHP能和Facebook谈恋爱,主要归功于创始人扎克伯格。小扎这个哈佛的学生,很不安分,鬼点子很多,很喜欢...【详细内容】
2022-09-19  码农翻身    Tags:PHP   点击:(25)  评论:(0)  加入收藏
CakePHP 是一个运用了诸如 ActiveRecord、Association Data Mapping、Front Controller 和 MVC(model&ndash;view&ndash;controller) 等著名设计模式的开源 Web 框架。CakePHP...【详细内容】
2022-08-30  新疆阿亮    Tags:CakePHP   点击:(62)  评论:(0)  加入收藏
0x01 前言最近很多家厂商都陆续开放了自己的Webshell检测引擎,并且公开接口,邀请众安全研究员参加尝试bypass检测引擎,并且给予奖励,我也参加了几场类似的活动,有ASRC的伏魔计划,...【详细内容】
2022-08-07  iHacking    Tags:PHP   点击:(70)  评论:(0)  加入收藏
1.用微信自带的接口生成一个零时二维码加上一个key 标识凭证微信公众号零时二维码接口2.用户使用微信扫描跳转到公众号页面时候触发事件推送,判断MsgType=》event(scan & subs...【详细内容】
2022-08-03  小白php程序员    Tags:php   点击:(65)  评论:(0)  加入收藏
功能要求隐式数据类型转换演示。实例代码<!doctype html><html><head><meta charset="utf-8"><title>隐式类型转换</title></head><body><?php//隐式类型转换$a = 10;$b = "...【详细内容】
2022-08-03  夜晚回家    Tags:数据类型   点击:(63)  评论:(0)  加入收藏
站内最新
站内热门
站内头条