折騰一天加所有半夜锣尉,終于知道怎么在macos下配置nginx + php-fpm + xdebug的docker鏡像文件。
記錄下來耙旦,以備后用唆涝。
這不是一個教程悄但,而是關鍵點記錄與指導。所以就不要怪我說的云里霧里了石抡。
你在參考別人教程中遇到問題,看看這個助泽。
今天寫的另外一個相關文章應該有用:Docker中l(wèi)inux下安裝xdebug
先pull一個nginx + php-fpm的docker image啰扛。
發(fā)現沒有裝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有很多現成的東西,這是個給懶惰者的誘惑路操。