daichi0412
@daichi0412 (中原 大地)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

PHPでDockerを使用した際のターミナル出力のエラー

解決したいこと

PHPのターミナル操作の基本的エラーを解決したいです。
PHPの基本操作でVSコードに出力したい文章を入力してターミナルにて出力しようとするとエラーが起きてしまいます。

発生している問題・エラー

$ docker-compose exec app php tmp/echo.php  //このコマンドを実行。
Could not open input file: tmp/echo.php

ソースコード

src/tmp/echo.php

<?php

echo 'Hi!' . PHP_EOL;

上記ソースコードを入力してから $ docker-compose exec app php tmp/echo.phpをターミナルにて実行しようとするとファイルを開けられない。とエラーが起きてしまいます。

誰か教えていただけると幸いです。

0

3Answer

コンテナ内のカレントディレクトリが src/ ではないんですかね?

docker-compose exec app pwd

の結果はどうなりますでしょうか

0Like

Comments

  1. @daichi0412

    Questioner

    @kazumacchiさん、回答ありがとうございます。
    上のコマンドを入力するとこうなりました。

    ```
    /var/www/html
    ```

    ちなみに私もカレントディレクトリを/srcにしてみたのですが、こういった形で表示されてしまうんです。

    ```
    $ docker-compose exec app php src/book_log.php //コマンド実行
    Could not open input file: src/book_log.php
    ```

    VSコード内の設定が間違えているのですかね。。

docker-compose.ymlが示されていないので何とも言えませんが、
ファイルが存在していないと言ってるあたりから、
バインドマウントが上手くいっていないか、
バインドマウントしていない場所のphpファイルを指定しており、
phpがホストではなくコンテナ内のディレクトリを参照している可能性が極めて高いと思われます。
docker-compose.ymlのvolumesを確認してphpファイルのある場所をバインドマウントするか、
バインドマウントしているディレクトリにphpファイルを移動してみてください。

また、実行するphpファイルの指定もコンテナ側のディレクトリで指定する必要がありますので気を付けてください。

0Like

$ docker-compose exec app php tmp/echo.php

このコマンドだと実行中のappサービスコンテナ内でphp tmp/echo.phpを実行して終わるので、こうするとコンテナ内に入って留まれます。

$ docker-compose exec app bash
/workdir $ _

bashを使っていると思う

docker-compose execはデフォルトで-itがつくのでdocker exec -it container_id ..と同じはず

コンテナ内のSHELLに入ってしまえば状況がより分かるので

/workdir $ printenv
/workdir $ pwd
/workdir $ ls -al

とかをしてみて、コンテナの今の状況がどういう風になっているのかまずは確認することが、闇雲にコマンドを流すよりは近道だと思います。

0Like

Your answer might help someone💌