介绍
介绍
福哥打算使用Docker方式安装最新版本的PHP环境,从hub上面查到了几个版本,包括cli、fpm、apache和zts,这几个版本有什么区别呢?福哥应该如何选择呢?
今天福哥就带着大家把这几种PHP的运行模式好好地属性一下。
CLI
CLI就是Command Line Interface的简写,也就是说就是在命令行里使用PHP程序的方式。这个版本下面通常是不支持web服务器方式访问的,不过在PHP5.4版本之后可以使用php内置的web服务器提供web服务的访问。
下面福哥就把php内置的web服务器的使用方法展示给大家,跟着福哥来吧~~
安装
拉取镜像
docker pull php:7.4-cli-buster
启动容器
docker run -tid --name php-cli -h php-cli php:7.4-cli-buster
启动web服务器
切入容器
docker exec -ti php-cli "/bin/bash"
启动web服务器
root@php-cli:/# mkdir webroot root@php-cli:/# cd webroot/ root@php-cli:/webroot# php -S localhost:80 [Wed May 12 02:22:38 2021] PHP 7.4.19 Development Server (http://localhost:80) started
测试
需要启动另外一个进程,切入容器里面操作。
root@php-cli:/# cd webroot/ root@php-cli:/webroot# echo "<?php echo \"the demo of PHP cli by tongfu.net\n\";" > test.php root@php-cli:/webroot# curl 'http://localhost/test.php' the demo of PHP cli by tongfu.net
FPM
FTPM就是FastCGI Process Manager的简写,它是一种以CGI方式运行PHP的方式,它是以进程方式运行PHP的。通常情况下PHP的fpm模式会配合Nginx服务器使用,使用PHP+Nginx的组合方式搭建的运行环境更加轻巧、速度更快。
福哥会在后面教给大家使用PHP的fpm模式配合Nginx搭建运行环境,敬请期待吧~~
Apache
不言而喻,这种方式就我们最长用的使用Apache运行PHP的方式,Apache默认是通过线程方式运行PHP的,优点是启动速度非常快,缺点是占用内存比较高。
Apache是一款全家桶web服务器,包括了绝大多数搭建web应用需要的功能模块,不管你用不用得到它都有,包括SSL、URL重写、输出数据压缩等等。
ZTS
ZTS就是Zend Thread Safely的简写,意思是说这个版本的PHP是基于线程安全的,相对的有一个版本叫做NTS,就是None Thread Safely,意思是非线程安全的。
基于线程安全和非线程安全是针对不同的操作系统内核来说的,通常情况下Linux操作系统下面的PHP是以ZTS方式运行的,而Windows操作系统下面的PHP是以NTS方式运行的。
为什么没有NTS版本?因为那是Windows平台嘛,我们玩的是Docker,是Linux啊~~
总结
今天福哥带着大家针对php的四种运行模式cli、fpm、apache、zts进行了一个比较深刻的了解,我们可以根据业务功能和硬件环境合理选择PHP的运行模式。