1

ローカルのオペレーティング システムに応じて、条件付きで php.ini 設定を設定するにはどうすればよいですか?

.env ファイルには、次の 2 つの変数が含まれています。

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
...

Linux は "xdebug.remote_connect_back = 1" をサポートし、Apple はサポートしないため、この時点で Apple と Linux マシンの設定が異なるはずです。

「uname」を使用できると思います。応答「Darwin」の場合は設定を使用できます。それ以外の場合は「xdebug.remote_connect_back = 1」で上書きする必要があります。

どうすれば解決できますか?

編集:現在、APPLE_OS_X=true のような .env ファイルで追加の変数を使用しています。Linux または Windows マシンを使用する場合、ユーザーは false に調整する必要があります。この変数に応じて、xdebug.remote_connect_back の値は 1 で上書きされます。

問題は、.env ファイルの APPLE_OS_X または Dockerfile の xdebug.remote_connect_back の値を自動的に設定するために、シェル コマンド 'uname' にどのように反応できるかということです。

4

0 に答える 0