【问题标题】:Vagrant : phpUnit not found (symfony 2.8)Vagrant:找不到phpUnit(symfony 2.8)
【发布时间】:2016-06-13 16:01:45
【问题描述】:

我是 phpUnit 的新手。我通过作曲家安装了它。我的 composer.json 如下:

"require": {
    "php": ">=5.5.9",
    "symfony/symfony": "^2.8",
    "doctrine/orm": "^2.5",
    "doctrine/doctrine-bundle": "^1.6",
    "doctrine/doctrine-cache-bundle": "^1.2",
    "symfony/swiftmailer-bundle": "^2.3",
    "symfony/monolog-bundle": "^2.8",
    "sensio/distribution-bundle": "^5.0",
    "sensio/framework-extra-bundle": "^3.0.2",
    "incenteev/composer-parameter-handler": "^2.0",
    "doctrine/mongodb-odm": "~1.0",
    "doctrine/mongodb-odm-bundle": "~3.0",
    "nicmart/tree": "~0.2",
    "jms/serializer-bundle": "^1.1",
    "simple-bus/symfony-bridge": "^4.1",
    "phpunit/phpunit":">=4.2",
    "codeception/codeception": "*",
    "nicolopignatelli/valueobjects": "^4.0"

},
"require-dev": {
    "sensio/generator-bundle": "^3.0",
    "symfony/phpunit-bridge": "^2.7"
    }

composer update 期间,我收到了
- 安装 phpunit/phpunit (5.2.9)

我在我的供应商中看到了 phpunit 目录。

现在在尝试输出 phpunit 版本(或尝试开始测试时)时,我收到以下错误消息:

me@myMachine:root/path/of/symfony$ phpunit -v The program 'phpunit' is currently not installed. To run 'phpunit' please ask your administrator to install the package 'phpunit'

有什么快捷方式可以在 bash 中创建吗?

更新

就像 2 个当前答案所建议的那样,我尝试运行 me@myMachine:root/path/of/symfony$ ./vendor/bin/phpunit -v

但它返回 permission denied 异常,尽管当前用户 (me@myMachine) 是文件所有者。

此外,me@myMachine:root/path/of/symfony$ ls -l ./vendor/bin 返回

-rw-rw-rw- 1 me me 612 Mar  1 09:52 codecept
-rw-rw-rw- 1 me me 603 Jan 28 13:50 doctrine
-rw-rw-rw- 1 me me 609 Jan 28 13:50 doctrine-dbal
-rw-rw-rw- 1 me me  607 Jan 28 13:50 doctrine.php
-rw-rw-rw- 1 me me 608 Feb 24 19:20 geotools
-rw-rw-rw- 1 me me 603 Mar  1 09:52 phpunit
-rw-rw-rw- 1 me me 978 Jan 20 12:15 security-checker

如果尝试chmod -vR u+x ./vendor/bin,它会按预期返回一个

mode of ‘bin/’ changed from 0777 (rwxrwxrwx) to 0766 (rwxrw-rw-)

mode of ‘bin/phpunit’ changed from 0666 (rw-rw-rw-) to 0766 (rwxrw-rw-)

但是me@myMachine:root/path/of/symfony$ ls -l ./vendor/bin 又回来了

-rw-rw-rw- 1 me me 612 Mar  1 09:52 codecept
-rw-rw-rw- 1 me me 603 Jan 28 13:50 doctrine
-rw-rw-rw- 1 me me 609 Jan 28 13:50 doctrine-dbal
-rw-rw-rw- 1 me me  607 Jan 28 13:50 doctrine.php
-rw-rw-rw- 1 me me 608 Feb 24 19:20 geotools
-rw-rw-rw- 1 me me 603 Mar  1 09:52 phpunit
-rw-rw-rw- 1 me me 978 Jan 20 12:15 security-checker

就像没有考虑到 chmod。

更新 2

显然,这个问题与 Vagrant 有关。

我完全重新安装了symfony,2.8和3.0版本,问题依旧。

我找到了this similar issue,因此选择全局安装phpUnit composer global require phpunit/phpunit,然后再次运行phpunit -v。这一次,找到了命令,但我得到了以下错误

me@myMachine:/path/to/symfony/root$ phpunit -v
PHPUnit 4.8.23 by Sebastian Bergmann and contributors.

Runtime:        PHP 5.6.14-1+deb.sury.org~trusty+1
Configuration:  /var/www/public/symfony/sgv3/sgv3/phpunit.xml.dist

.                                                                   1 / 1 (100%)

Time: 6.86 seconds, Memory: 27.75Mb

PHP Fatal error:  Call to undefined method PHPUnit_Framework_TestResult::warningCount() in /home/vagrant/.composer/vendor/phpunit/phpunit/src/TextUI/ResultPrinter.php on line 185

【问题讨论】:

  • 你不应该在"phpunit/phpunit":">=4.2", 中加入"require-dev" 吗?
  • 我试过了(即使我看不到相关性)但没有效果。
  • 你需要像bin/phpunit -h那样调用你项目的bin目录下的具体可执行文件你试过了吗?

标签: phpunit vagrant composer-php symfony-2.8


【解决方案1】:

您需要在项目的供应商的 bin 目录中调用特定的二进制文件,如

bin/phpunit -h

【讨论】:

  • 感谢您的回答。我现在有一个-bash: ./vendor/bin/phpunit: Permission denied
  • 尝试将其模式更改为 766 chmod -R 766 ./vendor/bin 或 chown 为当前用户
  • 在更改整个目录权限之前,它首先尝试 sudo 命令,但它也不起作用:sudo ./vendor/bin/phpunit 返回command not found
  • 如果是二进制文件,不应该是可执行的吗?
  • 显然是一个流浪问题
【解决方案2】:

如果您通过 Composer 安装 PHPUnit,则其二进制文件将位于 vendor/bin/phpunit

【讨论】:

  • 感谢您的回答,但现在我得到-bash: ./vendor/bin/phpunit: Permission denied
  • 但正如预期的那样 whoami == 文件所有者(和组所有者)。这是我降级到2.8的sf3.0,这有关系吗?
猜你喜欢
  • 2016-03-10
  • 1970-01-01
  • 2019-04-17
  • 1970-01-01
  • 1970-01-01
  • 2013-04-11
  • 2018-09-29
  • 2017-03-22
  • 2018-10-17
相关资源
最近更新 更多