安装Phing& MAMP上的PHPUnit

时间:2011-04-07 23:00:35

标签: macos osx-snow-leopard phpunit mamp phing

我在OS X 10.6上的MAMP下运行phpunit时遇到问题。我已经通过PEAR安装了phpunit并且它存在于MAMP目录中但是当我在终端中运行phpunit时没有任何反应。我猜这是一个路径问题,但作为一个os x新手,我不知道如何解决它。当我尝试从/Applications/MAMP/bin/php5.3/bin运行它时会发生这种情况

$ phpunit
-bash: /usr/bin/phpunit: No such file or directory
$ ./phpunit
$

这个问题看起来与How to Install phpunit 3.5 on mac with MAMP非常相似,但到目前为止解决方案还没有奏效。这是一些更多的系统信息:

phpunit在MAMP中的位置

$ sudo find / -name "phpunit"
/Applications/MAMP/bin/php5.3/bin/phpunit
/Applications/MAMP/bin/php5.3/lib/php/PEAR/phing/tasks/ext/phpunit
find: /dev/fd/3: Not a directory
find: /dev/fd/4: Not a directory

可能是这里的问题

$ which php
/usr/bin/php
$ which phpunit
$ which pear
$ which ./pear
./pear
$ which ./phpunit
./phpunit

来自/Applications/MAMP/conf/php5.3/php.ini的我的php.ini

include_path = ".:/Applications/MAMP/bin/php5.3/lib/php:/Applications/MAMP/bin/php5.3/lib/php/PEAR/"

尝试运行或访问phing时会出现同样的问题。

所以再一次,我猜这个问题是一个路径设置,但我不知道如何解决这个问题。

由于

戴夫

更新

感谢您的回复。 我的梨是1.9.2 pear config show lists

$ ./pear config-show
Configuration (channel pear.php.net):
=====================================
Auto-discover new Channels     auto_discover    <not set>
Default Channel                default_channel  pear.php.net
HTTP Proxy Server Address      http_proxy       <not set>
PEAR server [DEPRECATED]       master_server    pear.php.net
Default Channel Mirror         preferred_mirror pear.php.net
Remote Configuration File      remote_config    <not set>
PEAR executables directory     bin_dir          /Applications/MAMP/bin/php5.3/bin
PEAR documentation directory   doc_dir          /Applications/MAMP/bin/php5.3/lib/php/doc
PHP extension directory        ext_dir          /Applications/MAMP/bin/php5.3/lib/php/extensions
PEAR directory                 php_dir          /Applications/MAMP/bin/php5.3/lib/php/PEAR
PEAR Installer cache directory cache_dir        /tmp/pear/cache
PEAR configuration file        cfg_dir          /Applications/MAMP/bin/php5.3/lib/php/cfg
directory
PEAR data directory            data_dir         /Applications/MAMP/bin/php5.3/lib/php/data
PEAR Installer download        download_dir     /tmp/pear/cache
directory
PHP CLI/CGI binary             php_bin          /Applications/MAMP/bin/php5.3/bin/php
php.ini location               php_ini          /Applications/MAMP/conf/php5.3/php.ini
--program-prefix passed to     php_prefix       <not set>
PHP's ./configure
--program-suffix passed to     php_suffix       <not set>
PHP's ./configure
PEAR Installer temp directory  temp_dir         /tmp/pear/temp
PEAR test directory            test_dir         /Applications/MAMP/bin/php5.3/lib/php/test
PEAR www files directory       www_dir          /Applications/MAMP/bin/php5.3/lib/php/www
Cache TimeToLive               cache_ttl        3600
Preferred Package State        preferred_state  stable
Unix file mask                 umask            22
Debug Log Level                verbose          1
PEAR password (for             password         <not set>
maintainers)
Signature Handling Program     sig_bin          /usr/local/bin/gpg
Signature Key Directory        sig_keydir       /Applications/MAMP/conf/php5.3/pearkeys
Signature Key Id               sig_keyid        <not set>
Package Signature Type         sig_type         gpg
PEAR username (for             username         <not set>
maintainers)
User Configuration File        Filename         /Users/dave/.pearrc
System Configuration File      Filename         /Applications/MAMP/conf/php5.3/pear.conf'

ls -al of /Applications/MAMP/bin/php5.3/bin列出了phpunit等等

-rwxr-xr-x   1 dave  admin       920  6 Apr 19:55 phing
-r-xr-xr--@  1 dave  admin  57583340 16 Feb 16:08 php
-rwxr-xr-x   1 dave  admin      2169  6 Apr 19:48 phpunit

如上所述,php.ini似乎列出了正确的位置和echo $ PATH生成

$ echo $PATH
/Applications/MAMP/bin/php5.3/bin:/Applications/MAMP/bin/php5.3/lib/php:/Applications/MAMP/bin/php5.3/lib/php/PEAR/:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/X11/bin

3 个答案:

答案 0 :(得分:3)

让我尝试一下“通用phpunit安装故障排除列表”。 (从来没有写下来,所以我不能把你联系到任何东西)。

首先确保

pear version

报告至少pear 1.9.2。如果不是:pear install --force pear/pear并再次检查。如果这不起作用我剩下的唯一想法是重新安装梨。见下文。

您将在此过程中获得的有关“所需频道升级”的任何消息都很重要,您应该执行建议的命令。

之后尝试:

pear install phpunit/phpunit --force --alldeps

并重复此操作,直到它停止抱怨丢失频道或频道升级。

即使<{1}}显示1.9.2,仍然可能会抱怨需要PEAR 1.9.2。我只能通过重新安装pear来解决这个问题。

重新安装梨

我发现arround的唯一方法是通过“另存为...”重新安装将http://pear.php.net/go-pear.phar保存到磁盘并运行pear version


仍然没有运气?

php go-pear.phar

并查找“可执行目录”

如果该目录中没有“phpunit” binary ,则重新检查安装是否有效,如果没有告诉我们错误消息:)

二进制文件但pear config-show 不起作用

确保可执行目录位于$ PATH中或使用绝对路径查看它是否有效

执行但有关于缺少组件的错误

确保which phpunitPEAR directory)是你的php.ini的include_path


如果你遇到更多麻烦,让我/我们知道出了什么问题,我会尽力调整答案。

答案 1 :(得分:1)

我在没有PEAR的MAMP上安装了PHPUnit,我认为它有效。方法如下:

很可能,你已经安装了git。如果没有,http://help.github.com/mac-set-up-git/

按照此github页面上的说明操作:https://github.com/sebastianbergmann/phpunit/ - 从该页面复制(2010年4月8日):

mkdir phpunit && cd phpunit
git clone git://github.com/sebastianbergmann/phpunit.git
git clone git://github.com/sebastianbergmann/dbunit.git
git clone git://github.com/sebastianbergmann/php-file-iterator.git
git clone git://github.com/sebastianbergmann/php-text-template.git
git clone git://github.com/sebastianbergmann/php-code-coverage.git
git clone git://github.com/sebastianbergmann/php-token-stream.git
git clone git://github.com/sebastianbergmann/php-timer.git
git clone git://github.com/sebastianbergmann/phpunit-mock-objects.git
git clone git://github.com/sebastianbergmann/phpunit-selenium.git

将其复制并粘贴到终端。这应该给你一个phpunit文件夹与phpunit和所有依赖内。下一条说明是将所有文件夹复制到您的php include_path中。找出include_path文件中php.ini的位置。你正在使用MAMP,所以它应该像/Applications/MAMP/conf/php5.3/php.ini。通常,MAMP的include_path是这样的:

include_path = ".:/Applications/MAMP/bin/php5.3/lib/php"

但是,你不能只复制和粘贴文件夹,你必须繁琐地找出要复制的文件夹。您可以通过阅读每个文件夹的package.xml文件来了解这一点。从phpunit开始:

<dir name="/">
    <dir name="PHPUnit">
    ...
    </dir>
    <file baseinstalldir="/" name="ChangeLog.markdown" role="doc"/>
    <file baseinstalldir="/" name="LICENSE" role="doc"/>
    <file baseinstalldir="/" name="README.markdown" role="doc"/>
    <file baseinstalldir="/" name="phpunit.php" role="script">
        ...
    </file>
    <file baseinstalldir="/" name="phpunit.bat" role="script">
        ...
    </file>
</dir>

因此,您将PHPUnit文件夹,LICENSEREADME.markdownphpunit.phpphpunit.bat复制到include_path。在此之后,移至dbunit文件夹,php-file-iterator文件夹,依此类推。这有点乏味。

确保你不要替换任何文件夹,OSX 真的 替换每个文件夹(而不是像任何理智的人那样合并),所以如果文件夹已经存在,它只复制新的文件夹/文件。你应该能够通过一些逻辑找出容易复制的文件夹。

在此之后,将phpunit.php复制到任何文件夹,然后编辑第一行:

#!/usr/bin/env php

为:

#!/usr/bin/env /Applications/MAMP/bin/php5.3/bin/php

更改phpunit.php的权限,以便我们可以执行它:

chmod 744 phpunit.php

你应该能够像这样运行它:

./path/to/phpunit.php testCase.php

希望这有帮助。


如果您想升级PEAR或在MAMP OSX中使用时了解它的奇怪之处,那么这里有一个很好的讨论:

https://serverfault.com/questions/184741/upgrading-pear-from-1-9-0-to-1-9-1-fails


关于在没有PEAR的情况下安装PHPUnit的旧讨论:

How do you install PHPUnit without using PEAR on Mac OS X 10.5?

答案 2 :(得分:0)

我确实有类似的问题,多亏了这个线程我设法修复它。 我是这样做的: 遵循edorian建议:

  

重新安装梨

     

我发现arround的唯一方法就是   要重新安装保存   http://pear.php.net/go-pear.phar来   磁盘通过'另存为...'并运行PHP   去-pear.phar

然后调用pear config-show来查看:

Configuration (channel pear.php.net):
=====================================
Auto-discover new Channels     auto_discover    <not set>
Default Channel                default_channel  pear.php.net
HTTP Proxy Server Address      http_proxy       <not set>
PEAR server [DEPRECATED]       master_server    pear.php.net
Default Channel Mirror         preferred_mirror pear.php.net
Remote Configuration File      remote_config    <not set>
PEAR executables directory     bin_dir          /Users/mbritto/pear/bin
PEAR documentation directory   doc_dir          /Users/mbritto/pear/docs
PHP extension directory        ext_dir          /Applications/MAMP/bin/php5.3/lib/php/extensions
PEAR directory                 php_dir          /Users/mbritto/pear/share/pear
PEAR Installer cache directory cache_dir        /tmp/pear/cache
PEAR configuration file        cfg_dir          /Users/mbritto/pear/cfg
directory
PEAR data directory            data_dir         /Users/mbritto/pear/data
PEAR Installer download        download_dir     /tmp/pear/install
directory
PHP CLI/CGI binary             php_bin          /Applications/MAMP/bin/php5.3/bin/php
php.ini location               php_ini          /Applications/MAMP/conf/php5.3/php.ini
--program-prefix passed to     php_prefix       <not set>
PHP's ./configure
--program-suffix passed to     php_suffix       <not set>
PHP's ./configure
PEAR Installer temp directory  temp_dir         /tmp/pear/install
PEAR test directory            test_dir         /Users/mbritto/pear/tests
PEAR www files directory       www_dir          /Users/mbritto/pear/www
Cache TimeToLive               cache_ttl        3600
Preferred Package State        preferred_state  stable
Unix file mask                 umask            22
Debug Log Level                verbose          1
PEAR password (for             password         <not set>
maintainers)
Signature Handling Program     sig_bin          /usr/local/bin/gpg
Signature Key Directory        sig_keydir       /Applications/MAMP/conf/php5.3/pearkeys
Signature Key Id               sig_keyid        <not set>
Package Signature Type         sig_type         gpg
PEAR username (for             username         <not set>
maintainers)
User Configuration File        Filename         /Users/mbritto/.pearrc
System Configuration File      Filename         /Applications/MAMP/conf/php5.3/pear.conf

我可以看到有两个配置文件用于系统,一个用于用户(请参阅配置显示的底部。

我备份了我的用户配置文件并将其替换为系统配置文件。然后我需要将php_ini设置设置为/Applications/MAMP/conf/php5.3/php.ini(似乎系统配置文件中没有)。

之后我的phpunit再次运作! 感谢大家:)