I'm having problems running phpunit under MAMP on OS X 10.6. I've installed phpunit via PEAR and it is exists in the MAMP directory but when I run phpunit in terminal nothing happens. I'm guessing that this is a path problem but as a os x newbie, I don't know how to fix it. This is what happens when I try to run it from /Applications/MAMP/bin/php5.3/bin
$ phpunit
-bash: /usr/bin/phpunit: No such file or directory
$ ./phpunit
$
The problem looks very similar to this How to Install phpunit 3.5 on mac with MAMP but the solutions there haven't worked so far. Here is some more system info:
Location of phpunit in 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
Possibly the problem here
$ which php
/usr/bin/php
$ which phpunit
$ which pear
$ which ./pear
./pear
$ which ./phpunit
./phpunit
My php.ini from /Applications/MAMP/conf/php5.3/php.ini
include_path = ".:/Applications/MAMP/bin/php5.3/lib/php:/Applications/MAMP/bin/php5.3/lib/php/PEAR/"
The same issues happen when trying to run or access phing.
So again, I'm guessing the problem is a path setting but I'm not sure how to fix this.
Thanks
Dave
UPDATE
thanks for your response. My pear is 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 lists phpunit amongst others
-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
As noted above, the php.ini seems to list the correct location and echo $PATH generates
$ 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
Let my try with what I've come to thing of the "generic phpunit install troubleshooting list". (Never written that down before so i can't link you to anything).
First of make sure that
reports at least
pear 1.9.2
. If not:pear install --force pear/pear
and check again. If that doesn't work the only Idea I've got left is to reinstall pear. See below.Any messages about "needed channel upgrades" you will get in the process are important and you should execute the suggested commands.
After that try:
and repeat that until it stops complaining about missing channels or channel upgrades.
It still might complain about needing PEAR 1.9.2 even when
pear version
shows 1.9.2. I could only solve this by reinstalling pear.Reinstalling pear
The only way i found arround that is To reinstall save http://pear.php.net/go-pear.phar to disk via 'Save as...' and run
php go-pear.phar
Still no luck?
and look for the "executable directory"
If there is no "phpunit" binary in that directory recheck that the installing worked and if it didn't tell us about the error message :)
Binary is there but
which phpunit
doesn't workMake sure that executable directory is in your $PATH or use the absolute path to see if it works
It executes but there are errors about missing components
Make sure the
PEAR directory
(php_dir
) is your php.ini's include_pathIf you run into any more troubles let me/us know what went wrong and I'll try to adapt the answer.
I did have a similar issue, thanks to this thread I managed to fix it. Here is how I did it : Followed edorian suggestion :
Then called
pear config-show
to see this :I could see there was two config files one for the system and one for the user (see a the bottom of the config-show.
I backed up my user conf file and replaced it by the system one. Then I needed to set the php_ini setting to /Applications/MAMP/conf/php5.3/php.ini (seemed to be absent from the system config file).
After that my phpunit worked again! Thanks to everyone :)
I installed PHPUnit on MAMP without PEAR, I think it works. Here's how:
Chances are, you have git installed already. If not, http://help.github.com/mac-set-up-git/
Follow the instructions on this github page: https://github.com/sebastianbergmann/phpunit/ - copying from that page (8 April 2010):
Copy and paste that to terminal. That should give you a phpunit folder with phpunit and all the dependencies inside. The next instruction is to copy all the folders into your php
include_path
. Find out where yourinclude_path
is in yourphp.ini
file. You're using MAMP, so it should be something like/Applications/MAMP/conf/php5.3/php.ini
. Usually theinclude_path
for MAMP is this:However you cannot just copy and paste the folder, you have to tediously figure out which folder to copy. You can know this by reading the
package.xml
file of each folder. Start withphpunit
:So you copy the the
PHPUnit
folder,LICENSE
,README.markdown
,phpunit.php
,phpunit.bat
to yourinclude_path
. After this, move todbunit
folder,php-file-iterator
folder, and so on and so forth. It's a bit tedious.Make sure you DON'T REPLACE ANY FOLDER, OSX really replaces each folder (instead of merging like any sane person would), so if the folder already exists, it copy only the new folder/files. You should be able to figure out which folder to copy easily by a bit of logic.
After this, copy
phpunit.php
to any folder, then edit the first line:to:
Change the permission of
phpunit.php
so that we can execute it:You should be able to run it like this:
Hope this helps.
If you wanted to upgrade PEAR or learn something about it's quirkiness when used in MAMP OSX, there's a good discussion here:
https://serverfault.com/questions/184741/upgrading-pear-from-1-9-0-to-1-9-1-fails
Old discussion on installing PHPUnit without PEAR:
How do you install PHPUnit without using PEAR on Mac OS X 10.5?