ローカルのオペレーティング システムに応じて、条件付きで 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' にどのように反応できるかということです。