PHPStorm 調(diào)試 laradock

一. 準(zhǔn)備開發(fā)環(huán)境

最近學(xué)習(xí) laravel,發(fā)現(xiàn)MVC 的概念和 Asp.net 很類似。不想把本機(jī)的環(huán)境搞得混亂,找到了 laradock 的這個(gè)好東西。(P.S.?自從有了 docker,各種開發(fā)環(huán)境的搭建就變得非常簡單了。)

按照 laradock.io 的說明,很容易就把開發(fā)環(huán)境搭建好了。第一部分簡單記錄下搭建步驟。

我的是 Mac 系統(tǒng),打開終端,進(jìn)入某個(gè)目錄(e.g. /Users/<user>/)。然后clone laradock。

1.?git clone https://github.com/Laradock/laradock.git

進(jìn)入 laradock 目錄(/Users/<user>/laradock/)。后面很多命令都需要在這里運(yùn)行的。

2. cp env-example .env

然后打開.env 文件,修改 APPLICATION 的值,指向希望存放代碼的目錄,相對(duì)路徑或絕對(duì)路徑都可以(e.g. /Users/<user>/projects)

3. docker-compose up -d nginx mysql redis phpmyadmin

通過 docker-compose 來啟動(dòng)項(xiàng)目需要的模塊(每個(gè)模塊是單獨(dú)的 docker 容器)。workspace和 php-fpm 會(huì)自動(dòng)運(yùn)行的,所以不需要指定。這里我需要運(yùn)行 nginx, mysql, redis 以及 mysql 的管理工具。

如果在瀏覽器輸入 http://localhost 會(huì)提示404。為了測試環(huán)境是否正確,可以在 APPLICATION 指定的目錄(/Users//projects)下面創(chuàng)建 public子目錄,里面放一個(gè) index.php 文件,這樣 http://localhost 就能訪問到了。

不過我們想要 laravel 框架,所以需要進(jìn)入 workspace 容器里面,創(chuàng)建基于 laravel 的工程。

4.?docker-compose exec --user=laradock workspace bash

現(xiàn)在你會(huì)發(fā)現(xiàn)已經(jīng)進(jìn)入了 workspace 的容器了,并且用戶是 laradock。當(dāng)前的目錄是/var/www。這個(gè)目錄正好是 host 機(jī)器里面的/Users/<user>/projects 一個(gè)映射。現(xiàn)在可以創(chuàng)建項(xiàng)目了,輸入命令

5. composer create-project laravel/laravel coolapp

這里的 coolapp 是項(xiàng)目的名字,可以隨意指定。如果像我一樣等了很久也沒有反應(yīng)的話。先通過 ctrl+c 結(jié)束命令。需要先設(shè)置國內(nèi)的鏡像。執(zhí)行如下命令:

composer config -g repo.packagist composer https://packagist.phpcomposer.com

composer create-project laravel/laravel coolapp?

輸入 exit 退出 workspace容器,你會(huì)發(fā)現(xiàn)/Users/<user>/projects 下面多了一個(gè) coolapp 的目錄。還是在 laradock 目錄里面,執(zhí)行如下命令先停止容器。

6. docker-compose down

修改一下.env 里面APPLICATION 的值為/Users/<user>/projects/coolapp。然后可以再次啟動(dòng)

7. docker-compose?up -d nginx mysql redis phpmyadmin

再瀏覽器里面輸入 http://localhost 就能發(fā)現(xiàn) Laravel 頁面了。

二. 通過 PHPStorm 調(diào)試 PHP

以前用慣了 Visual Studio,發(fā)現(xiàn)能調(diào)試是一件很幸福的事。laradock 本身是支持 xdebug 的,需要修改一些配置。

1. 打開.env 文件,修改下面的值。

WORKSPACE_INSTALL_XDEBUG=true

PHP_FPM_INSTALL_XDEBUG=true

2. 修改Laradock/PHP-FPM/xdebug.ini 以及 Laradock/workspace/xdebug.ini文件,修改或添加如下的內(nèi)容:

xdebug.remote_enable=1

xdebug.remote_host=docker.for.mac.localhost

xdebug.remote_port=9000

xdebug.remote_autostart=1

xdebug.remote_connect_back=0

xdebug.remote_handler=dbgp

xdebug.max_nesting_level=250

xdebug.remote_log=”/var/www/xdebug_logs/xdebug_docker.log”

需要說明的是,remote_host 設(shè)置的是 docker 容器所在主機(jī)的地址。我的 host 是 Mac,所以可以用 docker.for.mac.localhost。如果是 windows,需要用 docker 中可以訪問的主機(jī) ip 地址。

3. 接下來需要重新 build 容器

docker-compose build workspace php-fpm

我在 build 的時(shí)候遇到了如下的錯(cuò)誤,不能下載 xdebug安裝。

?--->

Running in 2c241ea48d1f

No releases available for package

"pecl.php.net/xdebug"

install failed

ERROR: Service 'php-fpm'

failed to build: The command '/bin/sh -c if [ ${INSTALL_XDEBUG} = true ]; then ? ? pecl install

xdebug && ? ? docker-php-ext-enable xdebug ;fi' returned a non-zero code: 1

后來發(fā)現(xiàn)連上 VPN 就可以了成功 build 了。

4. 重啟容器

docker-compose down && docker-compose up -d nginx mysql redis phpmyadmin

5. 打開 PHPStorm,進(jìn)入Preferences->Language & Frameworks->PHP->Servers,新建一個(gè) server,這里取名 php-fpm。

Host 里面填入 laradock。這是因?yàn)閘aradoc/.env 文件里面有一行設(shè)置了 serverName。

### Remote Interpreter ####################################

# Choose a Remote Interpreter entry matching name. Default is `laradock`

PHP_IDE_CONFIG=serverName=laradock

然后設(shè)置 host 機(jī)器里面的代碼目錄以及與server 的映射( /var/www)。

6. 配置 Run->Edit Configuration如下圖。

7.?點(diǎn)擊電話那個(gè)按鈕啟動(dòng)監(jiān)聽,然后按下小蟲子開始 debug。

8. 在瀏覽器里面輸入 URL,比如 http://localhost?,F(xiàn)在就可以調(diào)試了。

9. 有的時(shí)候不想調(diào)試的話,可以在 laradock 目錄下面執(zhí)行

./php-fpm/xdebug stop

需要調(diào)試的時(shí)候通過./php-fpm/xdebug start 開啟。

最后說一下如何訪問phpmyadmin。在瀏覽器里面輸入 http://localhost:8080。

服務(wù)器填寫 mysql,用戶名和密碼默認(rèn)都是 root.


References:

https://medium.com/full-stack-development/laradock-xdebug-ms-code-no-problem-35a4338deb3f

http://ukagaka.github.io/php/2017/08/05/LaraDock.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容