在OSX上设置PHPUnit

Ale*_*x C 48 installation pear phpunit osx-snow-leopard

虽然我确信其他人最终已经设法解决了这个问题,但我一直在关注各种文档,并且已经有了一段艰难的时间.

http://www.phpunit.de/manual/current/en/installation.html

听起来很容易.但是,根据您的设置,您可能会陷入一个兔子洞.

例如,PEAR必须是高于1.8.1的版本.我当时有1.8.0,所以我去了解如何更新PEAR

PEAR upgrade-all
Run Code Online (Sandbox Code Playgroud)

给出错误.无法访问.

sudo PEAR upgrade-all
Run Code Online (Sandbox Code Playgroud)

工作,但升级用户'sudo'拥有的PEAR安装(而不是你的主要帐户...或类似的东西,短版本是5,它显然不起作用)

cd ~
pico .bash_profile
Run Code Online (Sandbox Code Playgroud)

export PATH=/usr/local/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

当您输入PEAR时,为您提供正确的PEAR,您终于准备好了安装PHPUnit指令的第1步.

pear channel-discover pear.phpunit.de
Run Code Online (Sandbox Code Playgroud)

错误.您无权访问/ usr/local/temp

sudo chmod 777 /usr/local/temp
Run Code Online (Sandbox Code Playgroud)

错误.您无权访问/usr/local/temp/channel.xml

sudo chmod 777 /usr/local/temp/channel.xml
pear channel-discover pear.phpunit.de
Run Code Online (Sandbox Code Playgroud)

错误.

Registry directory is not writeable by the current user
Run Code Online (Sandbox Code Playgroud)

但我在MAC上!

/sigh
/facepalm
/tears
Run Code Online (Sandbox Code Playgroud)

我实际上在我的机器上有一个phpunit的"工作副本".(YAY!)奇怪的问题是它只在我从一个特定文件夹输入phpunit时才有效

cd /usr/local/PEAR
phpunit
Run Code Online (Sandbox Code Playgroud)

^^工作

cd ~
phpunit
Run Code Online (Sandbox Code Playgroud)

^^返回

Warning: require_once(PHPUnit/Util/Filter.php): failed to open stream: No such file or directory in /usr/local/bin/phpunit on line 46

Fatal error: require_once(): Failed opening required 'PHPUnit/Util/Filter.php' (include_path='.:/usr/lib/php') in /usr/local/bin/phpunit on line 46
Run Code Online (Sandbox Code Playgroud)

到目前为止如此接近......我想知道是否有人对让这个人正常工作有一些意见?

And*_*ndy 166

要通过终端安装:

curl https://phar.phpunit.de/phpunit.phar -L -o phpunit.phar

chmod +x phpunit.phar

mv phpunit.phar /usr/local/bin/phpunit
Run Code Online (Sandbox Code Playgroud)

  • 这应该是正确的答案.这是在mac上全局安装phpunit的最简洁方法. (2认同)
  • 这应该是正确的答案,但有一点,不确定我是否是唯一一个但我必须在curl命令中添加"-L"以使其跟随重定向,否则我最终会得到一个302 html页面`curl https ://phar.phpunit.de/phpunit.phar -o phpunit.phar -L` (2认同)

Mik*_*yen 28

我们可以使用Homebrew安装它

$ brew install phpunit
Run Code Online (Sandbox Code Playgroud)

  • 更确切地说`brew install homebrew/php/phpunit` (3认同)
  • @PetrPeller 的评论在 2021 年不太精确。`错误:homebrew/php 已被弃用。此水龙头现在为空,其所有内容已被删除或迁移。`。但是 `brew install phpunit` 可以工作 (3认同)

Nat*_*Kot 14

通过自制软件(只有你通过自制软件安装了php):

brew tap josegonzalez/php
brew install phpunit
Run Code Online (Sandbox Code Playgroud)

  • 现在,您无需点击存储库.`brew install phpunit`就足够了. (8认同)

Ale*_*x C 12

啊......好吧......我想我现在可能已经开始工作了.

答案出现在PHPUnit文档中. http://www.phpunit.de/manual/3.4/en/installation.html

After the installation you can find the PHPUnit source files inside your local PEAR directory; the path is usually /usr/lib/php/PHPUnit.
Run Code Online (Sandbox Code Playgroud)

我运行的Mac版PEAR,如果运行"SUDO"用户下列出的所有命令,就会安装PHPUnit,例如:

sudo pear channel-discover pear.phpunit.de
sudo pear channel-discover pear.symfony-project.com
sudo pear upgrade-all
Run Code Online (Sandbox Code Playgroud)

此时,所有文件都下载到/ usr/local/pear但命令

phpunit
Run Code Online (Sandbox Code Playgroud)

正在寻找包含/ usr/lib/php/PHPUnit文件的解决方案?从中复制PHPUnit文件夹

cp /usr/lib/pear/PHPUnit /usr/lib/php
Run Code Online (Sandbox Code Playgroud)

要么

制作符号链接

cd /usr/lib/php
ln -s /usr/lib/pear/PHPUnit PHPUnit
Run Code Online (Sandbox Code Playgroud)

我见过很多有类似问题的人,但这个特殊的解决方案并没有出现在我见过的任何一个主题中.希望对你有用:) -Alex

  • 我建议在你的php.ini文件中设置include_path,以便在符号链接上有一个额外的目录,它有点传统 - 包括在OSX上.适合我.这也是PEAR文档中推荐的内容. (5认同)

jai*_*ime 5

您可以尝试使用 Composer 进行安装。通过这种方式,您可以隔离当前项目的 PHPUnit 版本,避免在对不同项目使用单个系统范围设置时可能出现的问题。正如 PHPUnit 文档所述(http://phpunit.de/manual/current/en/installation.html#installation.composer),安装非常简单。

将依赖项添加到您的 composer.json 文件中:

  {
     "require-dev": {
        "phpunit/phpunit": "4.0.*"
      }
  }
Run Code Online (Sandbox Code Playgroud)

然后更新依赖项:

composer update
Run Code Online (Sandbox Code Playgroud)

并且 PHPUnit 可以通过运行来使用:

./vendor/bin/phpunit
Run Code Online (Sandbox Code Playgroud)

如果您更改 Composer 安装路径(默认为“供应商”),请记住调整此路径。