Как настроить PEAR на Mac OS X 10.5 Leopard

В конечном итоге я пытаюсь установить PEAR, чтобы я мог легко установить PHPUnit. Я хочу настроить среду разработки Mac, Apache, MySQL, PHP, PHPUnit, чтобы я мог тестировать локально. У меня уже есть Apach, MySQL и PHP. Теперь все, что мне нужно, это PHPUnit, что означает, что мне нужно PEAR для его установки.

Я искал все, и есть несколько вариантов "учебника" о том, как установить PEAR в Mac OS X 10.5. Однако я не могу заставить их работать! Кто-нибудь имел успех в этом? Я не полностью уверен, что у меня все настроено так, как должно быть, поэтому, если бы вы включили "стандартные" Mac OS X 10.5, включили пути или просто объяснили, куда все должно идти, я был бы признателен.

Следуя this, я делаю следующее:

curl http://pear.php.net/go-pear > go-pear.php
sudo php -q go-pear.php

Я нажимаю enter, пока не попаду в список с 7 путями include:

1. Installation prefix ($prefix) : /Users/andrew
2. Temporary files directory     : $prefix/temp
3. Binaries directory            : $prefix/bin
4. PHP code directory ($php_dir) : $prefix/PEAR
5. Documentation base directory  : $php_dir/docs
6. Data base directory           : $php_dir/data
7. Tests base directory          : $php_dir/tests

Я изменяю Installation prefix как /usr/local, нажмите enter для продолжения, введите Y, чтобы установить PEAR_Frontend_Web-beta, PEAR_Frontend_Gtk2, MDB2. В конце концов, все установлено.

Далее...

С первой попытки я думаю, что include_path был прокомментирован из файла php.ini, но поскольку я уже изменил эту строку, и это не первый раз, когда я пытался установить, я получаю следующее сообщение:

WARNING!  The include_path defined in the currently used php.ini does not
contain the PEAR PHP directory you just specified:
</usr/local/PEAR>
If the specified directory is also not in the include_path used by
your scripts, you will have problems getting any PEAR packages working.

Would you like to alter php.ini </private/etc/php.ini>? [Y/n] : 

Я печатаю Y и позволяю груше автоматически обновлять мой путь include:

php.ini </private/etc/php.ini> include_path updated.

Current include path           : .:/usr/share/pear
Configured directory           : /usr/local/PEAR
Currently used php.ini (guess) : /private/etc/php.ini

Я нажимаю Enter для продолжения и получаю следующее сообщение:

The 'pear' command is now at your service at /usr/local/bin/pear

** The 'pear' command is not currently in your PATH, so you need to
** use '/usr/local/bin/pear' until you have added
** '/usr/local/bin' to your PATH environment variable.

Run it without parameters to see the available actions, try 'pear list'
to see what packages are installed, or 'pear help' for help.

For more information about PEAR, see:

  http://pear.php.net/faq.php
  http://pear.php.net/manual/

Thanks for using go-pear!

PHP Warning:  rmdir(/usr/local/temp): Not a directory in /Users/andrew/go-pear.php on line 1237

Warning: rmdir(/usr/local/temp): Not a directory in /Users/andrew/go-pear.php on line 1237

Обновление: Я думаю, что знаю, почему появились эти последние два предупреждения. Раньше я пытался исправить проблему каталога temp, создав символическую ссылку на /tmp, но если я правильно понимаю, PEAR пытается создать свой собственный каталог temp для установки, после чего он удалит его, когда он будет завершен. Поэтому я не должен был создавать эту символическую ссылку, так как она попытается удалить каталог temp после завершения установки.

Ответ 1

Здесь есть несколько вещей, которые могут пойти не так, это только догадки.

Во-первых, там два включают пути, о которых вам нужно беспокоиться. Первый - ваш путь включения PHP. Библиотеки PEAR (в основном) представляют собой только PHP-код, специально упакованный. Когда вы устанавливаете модуль PEAR, вы загружаете весь PHP-код, необходимый для этой библиотеки, и любые другие библиотеки PEAR, на которые вы устанавливаете библиотеку (извините за это предложение, но я не уверен, что есть лучший способ сказать что). Это включает путь в файлы php.ini(один файл для вашей командной строки php, другой для php yoru web server php, часто тот же файл).

Второй путь, о котором вам нужно беспокоиться, - это ваш путь к UNIX/shell. Это путь, по которому ваш компьютер будет искать команды при вводе команды с терминала. Команда "pear" - это команда командной строки.

Итак, мы должны убедиться, что

  • В файле php.ini для вашего сайта есть каталог PEAR по пути include
  • В файле php.ini для вашего php-приложения командной строки есть каталог PEAR в пути включения
  • Ваше приложение-оболочка (терминал, скорее всего BASH в OS X) имеет каталог PEAR в пути включения

Итак, для номера 1 поместите на ваш сервер страницу PHP, которая включает вызов функции

phpinfo();

В этом списке будет информация о вашем сервере. Найдите местоположение php.ini. Откройте этот файл в текстовом редакторе, найдите переменную include_path и добавьте путь к вашему каталогу PEAR (не удаляйте другие пути, просто добавьте свои).

Для номера 2 выполните следующую команду из командной строки

php -r "phpinfo();" | grep '.ini'

Букет строк будет распечатан, найдите тот, который читает что-то вроде "Загруженный файл конфигурации". Откройте этот файл в текстовом редакторе, найдите переменную include_path и добавьте путь к вашему каталогу PEAR (не удаляйте другие пути, просто добавьте свои).

Наконец, и это то, что я считаю вашей проблемой, нам нужно убедиться, что команда командной строки pear находится в вашем shell/ bash пути. Что эта ошибка относится к

** The 'pear' command is not currently in your PATH, so you need to

В вашем домашнем каталоге должен быть файл с именем ".bash_profile". Это скрытый файл, поэтому он не будет отображаться в Finder. Откройте его с помощью текстового редактора. Если у вас проблемы, потому что это скрытый файл, используйте редактор командной строки командной строки. Ctrl-X сохранит из pico

cd ~
pico .bash_profile

Этот файл запускается вашей оболочкой каждый раз, когда вы открываете окно терминала. Мы собираемся добавить /usr/local/bin в ваш PATH, что означает, что при попытке выполнить команду компьютер yoru будет искать команду в этой папке. Добавьте следующую строку в конец .bash_profile

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

Это более или менее эквивалентно следующему PHP-коду

$PATH = '/usr/local/bin:'.$PATH

Вы добавляете /usr/local/bin в качестве первого места с разделителями двоеточия для поиска команды, а затем добавляете остальную часть существующего пути к ней. После того, как вы добавили эту строку, закройте свой терминал, откройте его и введите

pear

Это должно дать вам список действительных команд груши, но, что более важно, вы узнаете, что груша находится на вашем пути.

Удачи!

Ответ 2

Я понял это. Вы "ИДИТЕ" запускаете go-pear.php там, где вы хотите установить грушу, поэтому вам нужно запустить ее под /usr/local, если вы хотите, чтобы pear binary был установлен в /usr/local/bin

:-)

Ответ 3

пользователь "bryan kennedy" (выше) хотел узнать синтаксис для изменения "include_path", необходимого в "php.ini"

(У меня была аналогичная проблема с OP, и я просто исправил проблему с помощью этой публикации.)

изменение на php.ini будет выглядеть как...

include_path=".:/path_to_pear_dir/PEAR"

вот как это выглядит, когда вы разрешаете "go-pear.php", чтобы внести изменения....

;***** Added by go-pear
include_path=".:/usr/local/bin/PEAR"
;*****