howto:docker+nginx + php-fpm + xdebug in macOs

栏目: PHP · 发布时间: 5年前

内容简介:折腾一天加所有半夜,终于知道怎么在macos下配置nginx + php-fpm + xdebug的docker镜像文件。记录下来,以备后用。这不是一个教程,而是关键点记录与指导。所以就不要怪我说的云里雾里了。

折腾一天加所有半夜,终于知道怎么在macos下配置nginx + php-fpm + xdebug的 docker 镜像文件。

记录下来,以备后用。

这不是一个教程,而是关键点记录与指导。所以就不要怪我说的云里雾里了。

你在参考别人教程中遇到问题,看看这个。

今天写的另外一个相关文章应该有用: Docker中 linux 下安装xdebug

先pull一个nginx + php-fpm的docker image。

发现没有装xdebug,没法调试代码,那不纯粹抓瞎吗?

按着网上步骤一步步来,始终不见vscode中红圈变黄。以为IDE问题,又下载PHPStorm问题亦然。

好了,现在说核心问题:

就是php.ihi,应该这样在尾部加上这些,注意其中macOs的特殊性:

[XDebug] 
zend_extension= /usr/local/webserver/php/modules/xdebug.so 
xdebug.profiler_enable=on 
xdebug.trace_output_dir="/usr/local/webserver/php/xdebug_trace" 
xdebug.profiler_output_dir="/usr/local/webserver/php/xdebug_profiler" 
dekey = "docker" 
xdebug.remote_connect_back = 0 
xdebug.remote_host = docker.for.mac.localhost 
xdebug.remote_enable = 1 
xdebug.remote_handler = "dbgp" 
xdebug.remote_port = 9000 
xdebug.remote_log = "/var/log/dnmp/php.xdebug.log" 
xdebug.remote_autostart = 1

xdebug.remote_host 这个地址是IDE(VSCODE、PHPSTORM)所寄居主机的IP。

xdebug.remote_port 也是IDE要填写的端口。

如果要填写主机的真实IP,它可能是变化的,比如你换了WIFI。

docker.for.mac.localhost是寄居主机的IP代号,应该是docker中定义的。

下面是些有关数据,记录下来。

php-fpm:

/usr/local/sbin/php-fpm

php.ihi:(php.ini是 php 运行核心配置文件)

/usr/local/etc/php
vi /usr/local/etc/php/php.ini

php-fpm.conf: 是 php-fpm 进程服务的配置文件

/usr/local/etc/php-fpm.conf

它里面只有一句:include=etc/php-fpm.d/*.conf

ls /usr/local/etc/php-fpm.d/

docker.conf www.conf www.conf.default zz-docker.conf

www.conf : php-fpm 进程服务的扩展配置文件

/usr/local/etc/php-fpm.d/www.conf

listen = /var/run/php-fpm.sock

nginx.conf:

/etc/nginx/nginx.conf

查看是否启动成功:

netstat -lnt | grep 9000

docker运行命令:

docker run -it \
 --cpuset-cpus 0 \
 --memory 512mb \
 -v /Volumes/data/www/web:/var/www/html \
 -e DISPLAY=unix$DISPLAY \
 -p 127.0.0.1:80:80 \
 --name npfx \
 --link mariadb:php_mariadb \
 --link redis:php_redis \
 nginx-php-fpm-xdebug

需要说明:类似这样的映射: -p 9000:9000 是没必要的,许多教程要求这样,因为xdebug.remote_port是docker内部访问外部的端口,映射有什么用。而80端口是docker内部提供的,所以要映射,以便外部浏览器调用。

Docker中重启php-fpm:

ps 
kill xx #php-fpm: master process (/usr/local/etc/php-fpm.d/www.conf)

[22-Apr-2019 07:54:40] NOTICE: configuration file /usr/local/etc/php-fpm.conf test is successful

安装好后,需要重新生成一个images: (docker commit 容器名 名称)

docker commit b165d24ed778 ngfx_last

VSCODE 配置 launch.json:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [

        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "stopOnEntry": true,//运行开始断点,用于调试。
            "pathMappings": { // "容器中对应的项目地址": "本机项目地址" // 绝对路径 
                "/var/www/html/":"/Volumes/data/www/web/"
            }
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9000
        }
    ]
}

PHPSTORM就不说了,其实VSCODE足够简单好用功能强大。

FireFox配置:

在扩展中安装xdebug-ext.然后在firefox地址栏后面,激活那只红色瓢虫就行了。

PHP调试挺麻烦,要配置很多东西,那像golang好用。

但做网页PHP有很多现成的东西,这是个给懒惰者的诱惑。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Learning Python, 5th Edition

Learning Python, 5th Edition

Mark Lutz / O'Reilly Media / 2013-7-6 / USD 64.99

If you want to write efficient, high-quality code that's easily integrated with other languages and tools, this hands-on book will help you be productive with Python quickly. Learning Python, Fifth Ed......一起来看看 《Learning Python, 5th Edition》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换