在 OSX 上设置 PHPUnit

Posted

技术标签:

【中文标题】在 OSX 上设置 PHPUnit【英文标题】:Setting up PHPUnit on OSX 【发布时间】:2011-03-19 02:17:18 【问题描述】:

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

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

听起来很简单。但是,根据您的设置,您可能会陷入困境。

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

PEAR upgrade-all

给出一个错误。没有访问权限。

sudo PEAR upgrade-all

工作,但升级用户“sudo”拥有的 PEAR 安装(而不是您的主帐户......或类似的东西,短版本是 5,它根本不起作用)

cd ~
pico .bash_profile

添加

export PATH=/usr/local/bin:$PATH

当你输入 PEAR 时给你正确的 PEAR,你终于准备好安装 PHPUnit 说明的第 1 步了。

pear channel-discover pear.phpunit.de

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

sudo chmod 777 /usr/local/temp

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

sudo chmod 777 /usr/local/temp/channel.xml
pear channel-discover pear.phpunit.de

错误。

Registry directory is not writeable by the current user

但我在 MAC 上!

/sigh
/facepalm
/tears

我的机器上实际上有一个 phpunit 的“工作副本”。 (耶!)奇怪的问题是 它仅在我从一个特定文件夹中键入 phpunit 时才有效

cd /usr/local/PEAR
phpunit

^^ 有效

cd ~
phpunit

^^ 返回

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

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

【问题讨论】:

大多数人应该跳过接受的答案和use Homebrew instead。 自制软件不适用于 mojave ...仅供参考(无法创建符号链接错误) 【参考方案1】:

通过终端安装:

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

chmod +x phpunit.phar

mv phpunit.phar /usr/local/bin/phpunit

【讨论】:

这应该是正确的答案。这是在 mac 上全局安装 phpunit 的最简洁方法。 在 osx 上,您需要创建“local”和“bin”文件夹。你可以用sudo mkdir -p /usr/lcoal/bin @Jarrod 你是不是打印错了lcoal?应该是local?谢谢 @Protocole 嘿,是的,我做到了!应该是local 这应该是正确的答案,但有一件事,不确定我是否是唯一的,但我必须在 curl 命令中添加“-L”以使其遵循重定向,否则我会结束带有 302 html 页面curl https://phar.phpunit.de/phpunit.phar -o phpunit.phar -L【参考方案2】:

我们可以使用 Homebrew 安装它

$ brew install phpunit

【讨论】:

更准确地说是brew install homebrew/php/phpunit @PetrPeller 的评论在 2021 年不太准确。Error: homebrew/php was deprecated. This tap is now empty and all its contents were either deleted or migrated.。但是brew install phpunit 有效【参考方案3】:

通过自制软件(仅当您也通过自制软件安装了 php):

brew tap josegonzalez/php
brew install phpunit

【讨论】:

现在,您无需点击存储库。 brew install phpunit 就够了。【参考方案4】:

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

答案在 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.

如果我运行“SUDO”用户下列出的所有命令,我运行的 PEAR 的 Mac 版本确实安装了 PHPUnit 例如:

sudo pear channel-discover pear.phpunit.de
sudo pear channel-discover pear.symfony-project.com
sudo pear upgrade-all

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

phpunit

正在寻找包含来自 /usr/lib/php/PHPUnit 的文件的解决方案?从

复制 PHPUnit 文件夹
cp /usr/lib/pear/PHPUnit /usr/lib/php

创建符号链接

cd /usr/lib/php
ln -s /usr/lib/pear/PHPUnit PHPUnit

我见过很多人有类似的问题,但这个特殊的解决方案在我见过的任何线程中都没有出现。希望对你有用:) -亚历克斯

【讨论】:

我建议在您的 php.ini 文件中设置 include_path 以在符号链接上添加额外的目录,这更传统一些 - 包括在 OSX 上。为我工作。这也是 PEAR 文档中推荐的内容。【参考方案5】:

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

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

  
     "require-dev": 
        "phpunit/phpunit": "4.0.*"
      
  

然后更新依赖:

composer update

运行 PHPUnit 就可以使用了:

./vendor/bin/phpunit

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

【讨论】:

选项 --dev 不再需要了,因为现在默认安装了 dev 包。【参考方案6】:

安装 PHPUnit

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

chmod +x phpunit.phar

mv phpunit.phar /usr/local/bin/phpunit

或者如果你已经安装了 PHPUnit,那么就试试这行通过终端更新 PHPUnit

 phpunit --self-update

这将更新您的 phpunit.phar 文件。

【讨论】:

【参考方案7】:
    从https://phar.phpunit.de/phpunit.phar手动下载phpunit 移动到下载的文件夹:$ cd /to/the/download/directory 将下载的 phpunit 重命名为 phpunit.phar $ chmod +x phpunit.phar $ sudo mv phpunit.phar /usr/local/bin/phpunit

【讨论】:

以上是关于在 OSX 上设置 PHPUnit的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Mac OSX 上设置 $GOPATH

如何使用 xampp 在 OSX 上正确设置 php_gmp

markdown 通过Brew在OSX上设置PHP和Composer

在 Mac OSX 上设置 System V 消息队列大小

OSX *** IP地址在本地和服务器上冲突? [关闭]

OSX上设置PHP的时区 date.timezone