0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Homestead環境でPHPUnitを実行しようとすると、`/usr/bin/env: ‘sh\r’: No such file or directory`というエラーが出た

Last updated at Posted at 2020-07-28

環境

  • Windows10 pro
  • Virtualbox Version 6.1.10
  • Vagrant 2.2.9
  • Homestead v10.12.0

経緯

vagrant upにてHomestead環境を作成し、以下のようにフォルダをマップした。

folders:
    - map: C:\Users\user_name\Documents\project_folder\
      to: /home/vagrant/code

/のエンドポイントにブラウザアクセスするとページが表示され、Homestead上でLaravelのアプリケーションは正常に動作している状態。

発生したエラー

phpunit ./tests/を実行すると下記のようなエラーが発生した。

vagrant@homestead:~/code$ phpunit ./tests/Unit/ExampleTest.php 
/usr/bin/env: ‘sh\r’: No such file or directory

原因と解決方法

vendor/ 以下のファイルが "CRLF" の改行コードになっていたのが原因だった。

以下コマンドを発行し、vendor/含むコンテンツの改行コードをすべて "CRLF" から "LF" に置き換えた。

find ./project_folder/ | grep -v 'node_modules' | xargs dos2unix

確認していないので断言はできないが、おそらく vendor/ 以下のファイルをすべて削除し、再度Homestead上で composer install を実行してpackageを再インストールすれば、同様に問題は解決すると思う。DOSフォーマットでインストールしてくれるはずなので。
dos2unixでの置換は時間がかかったので、以下をおすすめする。

rm -rf vendor/
composer install

経緯としては、

  1. powershell等で事前にcomposer install して vendor/ を作成した
  2. vendor/ 以下パッケージファイルがDOSフォーマットで生成された
  3. 生成された vendor/を含むフォルダをマップした
  4. Homestead環境上で、vendor/bin/phpunit を実行した
  5. 改行コードが "LF" でないことが原因でエラーが発生した

というところだと思う。

学び

  • windows側でcomposer installすると、パッケージファイルのファイルフォーマットはDOSフォーマットになる
  • 仮想環境のLinux上で開発をする予定であれば、composer installは仮想環境のLinux上で実行したほうがよさそう
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?