使用PHP

安装步骤如下:

  1. 构建并启动:

    $ cd dnnmmp
    
    # 构建 可选版本:php56 php71 php72 php73
    $ docker-compose up -d php72
    
    1
    2
    3
    4

    查看容器:$ docker container ls

  2. 命令行使用

    编辑 ~/.bashrc(或 ~/.zshrc),并在行尾添加

        # 如果电脑上已经安装过软件,请更换函数名称
        php () {
            tty=
            tty -s && tty=--tty
            docker run \
                $tty \
                --interactive \
                --rm \
                --volume $(pwd):/var/www/html:rw \
                --workdir /var/www/html \
                dnnmmp_php72 php "$@"
        }
        composer () {
            tty=
            tty -s && tty=--tty
            docker run \
                $tty \
                --interactive \
                --rm \
                --user $(id -u):$(id -g) \
                --volume ~/dnnmmp/composer:/tmp \
                --volume /etc/passwd:/etc/passwd:ro \
                --volume /etc/group:/etc/group:ro \
                --volume $(pwd):/app \
                composer "$@"
        }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26

    (3)让修改的内容生效

    $ source ~/.bashrc(或 ~/.zshrc)
    
    1

    (4)查看版本信息

    $ php -v
    PHP 7.2.19 (cli) (built: Jun 28 2019 03:58:08) ( NTS )
    Copyright (c) 1997-2018 The PHP Group
    Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
        with Zend OPcache v7.2.19, Copyright (c) 1999-2018, by Zend Technologies
    
    $ composer -v
    Composer version 1.8.6 2019-06-11 15:03:05
    
    1
    2
    3
    4
    5
    6
    7
    8

    (5)composer使用国内源

    # 阿里云源
    composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
    
    1
    2

使用swoole

因为swoole要启动http、websocket等服务端口,所以要以docker命令的方式来操作。
比如,我们使用easyswoole

  1. 安装easyswoole

    # 创建项目
    mkdir easyswoole-demo
    cd easyswoole-demo
    # 安装框架
    composer require easyswoole/easyswoole=3.x --ignore-platform-reqs --no-scripts
    
    php vendor/bin/easyswoole install
    
    1
    2
    3
    4
    5
    6
    7
  2. docker创建容器

    docker run --name=easyswoole -d -p 9501:9501 -i --volume=$PWD:/var/www/html --workdir=/var/www/html dnnmmp_php72
    
    # 参数说明
    # --name 容器名称
    # -d 后台运行
    # -p 映射主机端口:容器端口
    # -i 控制台交互
    # --volume 挂载目录
    # --workdir 定位在容器中的工作目录
    # dnnmmp_php72 镜像名称
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
  3. 进入容器

    # 进入容器命令,经常会使用到
    docker exec -it easyswoole /bin/bash
    
    # 退出容器命令:
    exit
    
    1
    2
    3
    4
    5
  4. 然后就像在本地运行命令一样,来操作了

    # 进入容器
    # 启动easyswoole(http服务)
    php easyswoole start
    
    1
    2
    3

    更多easyswoole命令:easyswoole官方文档

  5. 在浏览器中访问:

常见问题

  1. 如果在使用composer的过程中提示需要依赖?

    答:请在命令后面加上 --ignore-platform-reqs --no-scripts 来关闭依赖检测。

  2. 如何在crontab中使用PHP

    答:举例如下

    1. 编写测试内容 ./dnnmmp/www/hello.php
    2. 执行 crontab -e 进入定时任务
    3. 添加一个定时任务:
    */1 * * * * docker exec dnnmmp_php72_1 php ./hello.php > /tmp/test.log 2>&1 &
    
    1

    命令拆解说明:

    • (*/1 * * * *) 每一分钟执行一次
    • (docker exec dnnmmp_php72_1)进入容器,此时实际位置是在 ./dnnmmp/www 目录,因为此目录被挂载到了容器中。
    • (php ./hello.php)执行脚本
    • (> /tmp/test.log 2>&1 &)为了测试效果,我们将结果保存到日志中,方便查看
更新于: 8/27/2019, 6:57:06 PM