Установка Phing & PHPUnit на MAMP - PullRequest
       39

Установка Phing & PHPUnit на MAMP

1 голос
/ 08 апреля 2011

У меня проблемы с запуском phpunit под MAMP на OS X 10.6. Я установил phpunit через PEAR, и он существует в каталоге MAMP, но когда я запускаю phpunit в терминале, ничего не происходит. Я предполагаю, что это проблема пути, но, как ос новичок, я не знаю, как ее исправить. Это то, что происходит, когда я пытаюсь запустить его с /Applications/MAMP/bin/php5.3/bin

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

Проблема выглядит очень похоже на это Как установить phpunit 3.5 на Mac с 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

Мой php.ini из /Applications/MAMP/conf/php5.3/php.ini

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

Те же проблемы возникают при попытке запуска или доступа к phing.

Опять же, я предполагаю, что проблема в настройке пути, но я не уверен, как это исправить.

Спасибо

Dave

UPDATE

спасибо за ваш ответ. Моя груша 1.9.2 Груша Конфиг Показать списки

$ ./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 из /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 ]

3 голосов
/ 08 апреля 2011

Позвольте мне попробовать то, что я нашел в «общем списке устранения неполадок при установке phpunit». (Никогда раньше не записывал это, поэтому я не могу связать вас ни с чем).

Прежде всего убедитесь, что

pear version

сообщает не менее pear 1.9.2. Если нет: pear install --force pear/pear и проверьте еще раз. Если это не сработает, единственная идея, которая у меня есть, - переустановить грушу. Смотри ниже.

Любые сообщения о «необходимых обновлениях каналов», которые вы получите в процессе, важны, и вы должны выполнить предложенные команды.

После этого попробуйте:

pear install phpunit/phpunit --force --alldeps

и повторяйте это, пока он не перестанет жаловаться на отсутствующие каналы или обновления каналов.

Это все же может жаловаться на необходимость использования PEAR 1.9.2, даже если pear version показывает 1.9.2. Я мог решить эту проблему только переустановив грушу.

Переустановка груши

Единственный способ найти arround - переустановить сохранить http://pear.php.net/go-pear.phar на диск через «Сохранить как ...» и запустить php go-pear.phar


Все еще не повезло?

pear config-show 

и найдите «исполняемый каталог»

Если в этом каталоге нет "phpunit" binary , перепроверьте, что установка прошла успешно, и если она не сообщила нам об ошибке:)

Двоичный файл есть, но which phpunit не работает

Убедитесь, что исполняемый каталог находится в вашем $ PATH, или используйте абсолютный путь, чтобы проверить, работает ли он

Выполняется, но есть ошибки в отношении отсутствующих компонентов

Убедитесь, что PEAR directory (php_dir) - это include_path вашего php.ini


Если у вас возникнут какие-либо проблемы, сообщите мне / нам, что пошло не так, и я постараюсь адаптировать ответ.

1 голос
/ 08 апреля 2011

Я установил PHPUnit на MAMP без PEAR, я думаю, что это работает.Вот как:

Скорее всего, у вас уже установлен git.Если нет, http://help.github.com/mac-set-up-git/

Следуйте инструкциям на этой странице github: https://github.com/sebastianbergmann/phpunit/ - копирование с этой страницы (8 апреля 2010 г.):

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.Обычно include_path для MAMP таков:

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, LICENSE, README.markdown, phpunit.php, phpunit.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


Старая дискуссия об установке PHPUnit без PEAR:

Как установить PHPUnit без использования PEAR в Mac OS X 10.5?

0 голосов
/ 14 апреля 2011

У меня была похожая проблема, благодаря этой теме мне удалось ее исправить.Вот как я это сделал: Следуя совету редактора:

Переустановка pear

Единственный способ найти arround - переустановить сохранить http://pear.php.net/go-pear.phar на диск через 'Сохранитьas ... 'и запустите php go-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

Я мог видеть, что было два файла конфигурации, один длясистема и один для пользователя (см. внизу config-show.

Я сделал резервную копию своего пользовательского файла conf и заменил его системным. Затем мне нужно было установить для параметра php_ini значение / Applications/MAMP/conf/php5.3/php.ini (похоже, отсутствует в файле конфигурации системы).

После этого мой phpunit снова заработал! Спасибо всем:)

...