質問
Laravel5.8のテスト(PHPUnit)が、Windows10だと正常実行できるのに、
CentOS7上だと以下のエラーを吐いて失敗してしまいます。
この解決方法をご教示いただけると幸いです。。。
PHP Warning: include(/home/gitlab-runner/builds/53cca28f/0/vendor/composer/../phpunit/phpunit/src/Util/FileLoader.php): failed to open stream: No such file or directory in /home/gitlab-runner/builds/53cca28f/0/vendor/composer/ClassLoader.php on line 444 PHP Warning: include(): Failed opening '/home/gitlab-runner/builds/53cca28f/0/vendor/composer/../phpunit/phpunit/src/Util/FileLoader.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /home/gitlab-runner/builds/53cca28f/0/vendor/composer/ClassLoader.php on line 444 PHP Fatal error: Uncaught Error: Class 'PHPUnit\Util\FileLoader' not found in /home/gitlab-runner/builds/53cca28f/0/vendor/phpunit/phpunit/src/TextUI/Command.php:1058 Stack trace: #0 /home/gitlab-runner/builds/53cca28f/0/vendor/phpunit/phpunit/src/TextUI/Command.php(863): PHPUnit\TextUI\Command->handleBootstrap('/home/gitlab-ru...') #1 /home/gitlab-runner/builds/53cca28f/0/vendor/phpunit/phpunit/src/TextUI/Command.php(173): PHPUnit\TextUI\Command->handleArguments(Array) #2 /home/gitlab-runner/builds/53cca28f/0/vendor/phpunit/phpunit/src/TextUI/Command.php(162): PHPUnit\TextUI\Command->run(Array, true) #3 /home/gitlab-runner/builds/53cca28f/0/vendor/phpunit/phpunit/phpunit(61): PHPUnit\TextUI\Command::main() #4 {main} thrown in /home/gitlab-runner/builds/53cca28f/0/vendor/phpunit/phpunit/src/TextUI/Command.php on line 1058
環境
- windows10
- CentOS7
- PHP 7.2.10
- Laravel 5.8.30
質問詳細
実機はWindows10で、開発を行っております。
テストを書き、下記コマンドをコマンドプロンプト(cmd)で実行すると、テストが正常に実行されました。
"vender/bin/phpunit"
ソースコードをgitlabで管理しているため、CIツールはgitlab-runnerを使っています。
runner上でテストを自動実行させようとしているのですが、上記のような、
PHP Fatal error: Uncaught Error: Class 'PHPUnit\Util\FileLoader' not found
というエラーが出てしまいます。
実際、デプロイ先の本番環境(CentOS7)で 、
vender/bin/phpunit
を叩くと、同様のエラーが発生します。
なお、
php vender/bin/phpunit
を叩くと、シェル文(if ... fi
など)がそのままプリントされます。
もちろん、
./vender/bin/phpunit
なども試しましたが結果は一緒でした。
この原因は何なのでしょうか…?
Windowsで実行できていて、Linuxで実行できないというのがまた不思議で……
ご存知の方がいらっしゃいましたら、ご教示いただけますと幸いです。
よろしくお願いいたします。
あまり関係はないと思いますが、テストコードは以下です。
<?php namespace Tests\Unit; use Tests\TestCase; class HogeControllerTest extends TestCase { public function testIndex() { $response = $this->get(action('HogeController@index')); $response->assertStatus(200); } public function testTop() { $response = $this->get(action('HogeController@top')); $response->assertStatus(200); } }
composer json
{ "name": "laravel/laravel", "description": "The Laravel Framework.", "keywords": ["framework", "laravel"], "license": "MIT", "type": "project", "require": { "php": ">=7.1.3", "abraham/twitteroauth": "^0.7.4", "curl/curl": "^1.8", "fideloper/proxy": "~4.0", "laravel/framework": "5.8.*", "laravel/slack-notification-channel": "^2.0", "laravel/tinker": "~1.0", "ext-mbstring": "*", "ext-fileinfo": "*" }, "require-dev": { "filp/whoops": "~2.0", "fzaninotto/faker": "~1.4", "mockery/mockery": "0.9.*", "phpunit/phpunit": "^7.5" }, "autoload": { "classmap": [ "database/seeds", "database/factories" ], "psr-4": { "App\": "app/" } }, "autoload-dev": { "psr-4": { "Tests\": "tests/" } }, "extra": { "laravel": { "dont-discover": [ ] } }, "scripts": { "post-root-package-install": [ "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" ], "post-create-project-cmd": [ "@php artisan key:generate" ], "post-autoload-dump": [ "Illuminate\Foundation\ComposerScripts::postAutoloadDump", "@php artisan package:discover" ] }, "config": { "preferred-install": "dist", "sort-packages": true, "optimize-autoloader": true } }