如何根据本地操作系统有条件地设置 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 的值。