网站首页 > 基础教程 正文
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内置服务器。
猜你喜欢
- 2025-01-03 C之正则表达式
- 2025-01-03 Wordpress建站教程:网站添加自动Tag标签内链 提升SEO优化效果
- 2025-01-03 Thinkphp3.2.3及以下版本漏洞整理
- 2025-01-03 laravel通过artisan命令一键生成增_删_改_查验证命令
- 2025-01-03 2小时快速搭建一个高可用的IM系统
- 2025-01-03 FCKeditor上传漏洞的总结分析
- 2025-01-03 php从远程URL获取(mp4 mp3)音视频的流媒体数据
- 2025-01-03 记一次靶场实战【网络安全】
- 2025-01-03 滑动解锁提交评论插件_一招屏蔽WordPress垃圾评论
- 2025-01-03 浅解用PHP实现MVC
- 01-09Oracle数据库面试题汇总
- 01-09Oracle AWR解析-Report Summary
- 01-09想要成为数据分析师,这些Excel必备知识点你得掌握
- 01-09java开发中常用Oracle函数实例总结比较,当真不少
- 01-09DriveWorks其实是这么回事
- 01-09EXCEL做数据分析,学会这些就入门了
- 01-09一场pandas与SQL的巅峰大战(六)
- 01-09Oracle数据库知识 day01 Oracle介绍和增删改查
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)