首頁 >後端開發 >php教程 >具有PHP INI環境變量的靈活Docker圖像

具有PHP INI環境變量的靈活Docker圖像

Karen Carpenter
Karen Carpenter原創
2025-03-06 02:15:09949瀏覽

本教程演示瞭如何使用環境變量在Dockerized PHP 8.4應用程序中配置Xdebug,從而增強了靈活性並避免了硬編碼INI設置。 以前的教程硬編碼Xdebug設置,限制開發人員自定義。這種方法允許每個開發人員在不更改docker映像的情況下管理其XDEBUG配置。

使用環境變量簡化配置,使用環境變量支持INI文件中的後備值。 以前,

>文件看起來像這樣:xdebug.ini

<code>; build/php/conf.d/xdebug.ini file
[xdebug]
xdebug.mode = debug

xdebug.client_host = host.docker.internal

; Or use the host machine IP address:
; xdebug.client_host = 192.168.86.203

xdebug.start_with_request = yes</code>
此方法需要每個開發人員的手動INI文件更新,這是效率低下的。 優越的方法利用環境變量:

<code>services:
  app:
    # ... other configurations ...
    environment:
      XDEBUG_CONFIG: "client_host=0.0.0.0 start_with_request=yes"
      XDEBUG_MODE: "debug,develop"</code>
>將這些環境變量存儲在未轉化的

文件中允許每次開發器自定義。 另外,您可以直接在.docker.env>文件中直接利用環境變量:> xdebug.ini

前綴避免命名衝突並清楚地識別INI環境變量。
<code>; build/php/conf.d/xdebug.ini file
[xdebug]
xdebug.mode = ${PHP_XDEBUG_MODE:-debug,develop}

xdebug.client_host = ${PHP_XDEBUG_CLIENT_HOST:-host.docker.internal}

xdebug.start_with_request = ${PHP_XDEBUG_START_WITH_REQUEST:-trigger}</code>
>和

保留用於直接Xdebug配置。 PHP_> XDEBUG_MODE>要驗證設置,將XDEBUG_CONFIG添加到

>或使用docker容器中的以下命令:

> phpinfo(); exit; public/index.php對於本地自定義,將一個

添加到您的
$ docker compose up --build -d
$ docker compose exec app bash
$ php -i | grep xdebug\.start_with_request
>:

> env_file docker-compose.yamlcreate

(添加到
services:
  app:
    # ... other configurations ...
    env_file:
      - .docker.env
>)和

.docker.env具有默認設置的文件:.gitignore .docker.env.example

>重建容器以查看所反映的更改。 更新的設置將在
<code>PHP_XDEBUG_MODE=debug

PHP_XDEBUG_CLIENT_HOST=host.docker.internal
# Or use your computer's local network IP
# PHP_XDEBUG_CLIENT_HOST=192.168.86.250

PHP_XDEBUG_START_WITH_REQUEST=trigger</code>
>中可見:

phpinfo()

Flexible Docker Images with PHP INI Environment Variables此方法允許在不修改圖像構建過程的情況下進行靈活的Xdebug配置。 雖然直接的Xdebug環境變量提供了簡單性,但INI方法提供了更全面的控制,因為並非所有設置都可以通過

進行配置。選擇最適合您需求的方法。

以上是具有PHP INI環境變量的靈活Docker圖像的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn