69767
dockerでLAMP環境を作成致しまして、ブラウザに処理を表示させることは可能ですが、コンソール画面で、標準入力を行い、文字列をコンソール出力することは可能でしょうか？  
作成したコンテナに入りまして、PHPファイルを指定しましても、期待通りの動作はしませんでした。

実際に可能かどうかや、可能であれば方法などをご教授宜しくお願い致します。
CC BY-SA 4.0
2020-08-20T05:50:46.663
69718
2022-08-02T01:23:21.880
40716
question
php docker
DockerでPHP環境を作成し、実行結果をコンソール出力することは可能でしょうか？
> DockerでPHP環境を作成し、実行結果をコンソール出力することは可能でしょうか？

> コンソール画面で、標準入力を行い、文字列をコンソール出力することは可能でしょうか？

> 実際に可能かどうかや、可能であれば方法などをご教授宜しくお願い致します。

できます。実際にやってみましょう。

[php - Docker Hub](https://hub.docker.com/_/php) に

> Run a single PHP script  
>  For many simple, single file projects, you may find it inconvenient to
> write a complete Dockerfile. In such cases, you can run a PHP script by
> using the PHP Docker image directly:

> $ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w
> /usr/src/myapp php:7.4-cli php your-script.php

とありますので、まず自分のPCに 新しく空のフォルダをつくって、そのフォルダに移動し、 **hoge.php**
というファイルを作ってみます。中身は下記のようにしてください。

**hoge.php**

```

    <?php
    $hoge = fgets(STDIN);
    echo $hoge;
    ?>
    
```

そして

```

    docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp php:7.4-cli php hoge.php
    
```

とすると、標準入力から入力を受け取るようになるので、適当にメッセージを打ち込んでリターンキーを押すと、入力した値がそのまま表示されます。

今度は

```

    docker run --name php_hoge -dit php:7.4-cli
    
```

としたあと

```

    docker exec -it php_hoge /bin/sh
    
```

としてコンテナ内に入り、PHPを対話モードで実行してみましょう（`php -a`とすれば対話モードになります）。 対話モードになると `php >`
と表示されているので

```

    php > print("A");
    
```

とすれば、結果が表示されます。対話モードですが、対話モード自体への入力も標準入力から行っているといえるので、やはりコンテナ内でも可能です。

また

```

    docker run -dit --name hoge_hoge -v "$PWD":/usr/src/myapp -w /usr/src/myapp php:7.4-cli
    
```

としたあとに

```

    docker exec -it hoge_hoge /bin/sh
    
```

としてコンテナに入ると、先程作ったホスト側の **hoge.php** が参照できるので、コンテナ内で

```

    php hoge.php
    
```

とすれば、標準入力から値を受け取るプログラムが試せます。

（ですので、質問者さんの環境でダメだったのであれば、詳しい環境構築の手順と実際に試してみた手順を不都合のない範囲でできるだけ詳細に書いていただく必要があります（LAMP環境と一口に言ってもその構築方法は様々です）。できるかできないか、可能であればその手順とありますので、上記はその手順を載せたものとなります）
CC BY-SA 4.0
2020-08-21T14:40:53.143
69767
2022-08-02T01:23:21.880
2022-08-02T01:23:21.880
9008
9008
69718
answer