1

如何根据本地操作系统有条件地设置 php.ini 设置?

.env 文件包含两个变量:

XDEBUG_ENABLE=true
PHP_INI=./docker/runner/php.ini-development

Docker-compose.yml 看起来像这样:

...
build:
  context: .
  dockerfile: ./docker/runner/Dockerfile
  args:
    - XDEBUG_ENABLE=${XDEBUG_ENABLE}
    - PHP_INI=${PHP_INI}
...

Dockerfile 包含以下代码:

...
ARG PHP_INI=./docker/runner/php.ini-local
COPY $PHP_INI /usr/local/etc/php/php.ini

ARG XDEBUG_ENABLE=false
RUN if [ $XDEBUG_ENABLE = true ]; then pecl install xdebug-2.6.0 && docker-php-ext-enable xdebug; fi;
...

有趣的是在 php.ini-development 中:

...
xdebug.default_enable = 1
xdebug.remote_connect_back = 0
xdebug.remote_host = docker.for.mac.host.internal
...

此时,Apple 和 Linux 机器应该有不同的设置,因为 Linux 支持“xdebug.remote_connect_back = 1”而 Apple 不支持。

我猜可以使用“uname”,并且在响应“Darwin”的情况下可以使用设置,否则它们应该被“xdebug.remote_connect_back = 1”覆盖。

我该如何解决?

编辑:目前我在 .env 文件中使用了一个附加变量,如 APPLE_OS_X=true。用户在使用 Linux 或 Windows 机器时必须将其调整为 false。根据这个变量,xdebug.remote_connect_back 的值将被 1 覆盖。

问题仍然是我如何对 shell 命令 'uname' 做出反应,以自动设置 .env 文件中的 APPLE_OS_X 或 Dockerfile 中的 xdebug.remote_connect_back 的值。

4

0 回答 0