资讯专栏INFORMATION COLUMN

【modernPHP专题(14)】内置的http服务器

RancherLabs / 2986人阅读

摘要:起就在中内置了服务器但只是提供开发测试使用,不推荐使用中生产环境中。因为这个服务器接受处理请求时顺序执行的,不能并发处理。这个内置的服务器使用起来非常的方便,你只需要执行下面的命令启动服务器然后就可以访问了。

PHP 5.4起就在CLI SAPI中内置了web服务器,但只是提供开发测试使用,不推荐使用中生产环境中。因为这个服务器接受处理请求时顺序执行的,不能并发处理。

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

启动Web服务器
$ php -S localhost:8000

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

启动web服务器时指定文档的根目录
php -S localhost:8000 -t foo/
使用路由器脚本

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

// router.php
if (preg_match("/.(?:png|jpg|jpeg|gif)$/", $_SERVER["REQUEST_URI"])) {
    return false;    // serve the requested resource as-is.
} else {
    echo "

Welcome to PHP

"; }
$ php -S localhost:8000 router.php
判断是否是在使用内置web服务器

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

// 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之后才支持的。

处理不支持的文件类型

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

// 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服务器

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

$ php -S 0.0.0.0:8000

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/31464.html

相关文章

  • modernPHP专题(13)】ZendOpcache字节码缓存

    摘要:概述字节码缓存不是的新特性,有很多独立的扩展可以实现,比如和等,但是截至目前这些扩展都没有集成到内核,从开始,内置了字节码缓存功能,名为。开始之前,我们先来看看什么是字节码缓存,以及字节码缓存的作用是什么。该函数将重置整个字节码缓存。 概述 字节码缓存不是PHP的新特性,有很多独立的扩展可以实现,比如APC、eAccelerator和Xache等,但是截至目前这些扩展都没有集成到PHP...

    KevinYan 评论0 收藏0
  • modernPHP专题(2)】反射机制Reflection

    摘要:简介是才有的新功能,它是用来导出或提取出关于类方法属性参数等的详细信息,包括注释。 简介 PHP Reflection API是PHP5才有的新功能,它是用来导出或提取出关于类、方法、属性、参数等的详细信息,包括注释。 class Reflection { } interface Reflector { } class ReflectionException extends Exce...

    mrli2016 评论0 收藏0
  • modernPHP专题(3)】依赖注入与服务容器

    摘要:而依赖倒置原则的思想是,上层不应该依赖下层,应依赖接口。上面通过构造函数注入对象的方式,就是最简单的依赖注入当然注入不仅可以通过构造函数注入,也可以通过属性注入,上面你可以通过一个来动态为这个属性赋值。 依赖倒置和控制反转是一种编程思想,而依赖注入就是通过服务容器实现这种面向接口或者是面向抽象编程的思想 概念理解 依赖倒置原则 依赖倒置是一种软件设计思想,在传统软件中,上层代码依赖于下...

    terro 评论0 收藏0
  • modernPHP专题(5)】类多继承替代方案Traits

    摘要:概述是新进入的特性,其目的就是解决的类不能多继承的问题。可以理解为一组能被不同的类都能调用到的方法集合。只需要在类中使用关键词引入即可,可引入多个,用隔开。为了解决多个在同一个类中的命名冲突,需要使用操作符来明确指定使用冲突方法中的哪一个。 概述 traits是PHP5.4新进入的特性,其目的就是解决PHP的类不能多继承的问题。Traits不是类!不能被实例化。可以理解为一组能被不同的...

    imtianx 评论0 收藏0
  • modernPHP专题(12)】魔术方法小结

    说明 魔术方法就是在特定场景下不需要调用而自动执行的方法。因为有魔术方法,所以我们的类可以写得很灵活~ __construct #构造方法,在类被实例化时自动调用,一般用于初始化操作; __destruct #析构方法,对象被销毁时自动调用; __clone() #克隆方法,当对象被克隆时,将会自动调用 __get($key) #属性获取...

    hearaway 评论0 收藏0

发表评论

0条评论

RancherLabs

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<