Хорошо, я думаю, что прежде чем начать, я должен просто сказать, что я полный n00b, когда речь заходит о теме OSX / BSD.У меня был только MBP в течение прошлой недели или около того, и я изучал HEAPS.Хотя, несмотря на это, я все еще пытаюсь обернуть голову вокруг нескольких вещей, поэтому, пожалуйста, будьте нежны:)
Хорошо, к моей проблеме.Я пытался настроить свою локальную среду разработки в течение нескольких дней.Я активировал Apache 2.2 и PHP 5.3.3, которые пришли с ОС.Я также вручную установил MySQL, Homebrew и настроил BIND (для более легкого управления vhost).Все, казалось, работало довольно хорошо, пока я не понял, что мне нужно было также установить PEAR.
К сожалению, многие критические области в продуктах моей компании в значительной степени зависят от библиотеки PEAR, поэтому я должен был убедиться, что это всеи продолжить, прежде чем продолжить.Чтобы установить PEAR, я сделал следующее:
- $ cd / usr / local /
- $ curl http://pear.php.net/go-pear |sudo php
- $ php -q go-pear.php
- Выполните инструкции по установке PEAR
- $ mate ~ / .bash_profile
- Добавлено / usr/ local / bin к моей переменной $ PATH
- Сохраненный и закрытый TextMate
- $, который груша (проверил расположение исполняемого файла PEAR)
- $ php -r "phpinfo ();»|grep '.ini' (чтобы проверить местонахождение текущего php.ini)
- $ mate /etc/php.ini
- Изменен параметр 'include_path' на: ".: / usr / local /PEAR "
- Сохраненные и закрытые TextMate
- $ sudo apachectl restart
- Довольный результатами, я начинаю установку нескольких необходимых пакетов PEAR (HTTP, NET и т. Д.)
Затем я заканчиваю проверять последнюю версию одного из наших SVN-репозиториев и устанавливаю приложение.Я пытаюсь получить к нему доступ через браузер и получаю сообщение об ошибке:
Warning: require_once(HTTP/Request2.php): failed to open stream: No such file or directory in /Users/wilhelm/Sites/wrk/t-box-3a-rxml/public/apps/Mpx/Poller.class.php on line 8
Call Stack:
0.0003 651400 1. {main}() /Users/wilhelm/Sites/wrk/t-box-3a-rxml/public/call.php:0
0.0028 927096 2. RXML_Config::autoload() /Users/wilhelm/Sites/wrk/t-box-3a-rxml/public/config/autoload.php:0
0.0040 1144272 3. require_once('/Users/wilhelm/Sites/wrk/t-box-3a-rxml/public/apps/Mpx/Poller.class.php') /Users/wilhelm/Sites/wrk/t-box-3a-rxml/public/config/autoload.php:18
Fatal error: require_once(): Failed opening required 'HTTP/Request2.php' (include_path='.:/usr/local/PEAR;/Users/wilhelm/Sites/wrk/t-box-3a-rxml/public/Library/Pear/') in /Users/wilhelm/Sites/wrk/t-box-3a-rxml/public/apps/Mpx/Poller.class.php on line 8
Call Stack:
0.0003 651400 1. {main}() /Users/wilhelm/Sites/wrk/t-box-3a-rxml/public/call.php:0
0.0028 927096 2. RXML_Config::autoload() /Users/wilhelm/Sites/wrk/t-box-3a-rxml/public/config/autoload.php:0
0.0040 1144272 3. require_once('/Users/wilhelm/Sites/wrk/t-box-3a-rxml/public/apps/Mpx/Poller.class.php') /Users/wilhelm/Sites/wrk/t-box-3a-rxml/public/config/autoload.php:18
Я могу проверить местоположение этих файлов.Они существуют и находятся в правильном каталоге.Насколько я понимаю, с помощью 'include_path' of '.: / Usr / local / PEAR' PHP сначала ищет в том же каталоге, что и вызывающий скрипт, если ничего не найдено, он перемещается на следующий путь в списке.В последнем случае это ДОЛЖЕН быть / usr / local / PEAR, но он ничего не дает.
Единственная странная вещь, которую я вижу из сообщения об ошибке, - это следующий бит во втором разделе:
(include_path='.:/usr/local/PEAR;/Users/wilhelm/Sites/wrk/t-box-3a-rxml/public/Library/Pear/')
После '.: / Usr / local / PEAR' стоит точка с запятой и к ней добавляется другой (действительный) путь.Меня не беспокоит этот конкретный путь, но я обеспокоен тем, что точка с запятой заставляет PHP думать обо всем после первого двоеточия как об одном.Если это так, то имеет смысл, что PHP не может найти библиотеки PEAR.
Учитывая то, что я упомянул, кто-нибудь еще может придумать какую-либо причину или дать какое-либо понимание этого вопроса?Спасибо HEAPS!
РЕДАКТИРОВАТЬ:
Хорошо, это было решено.Я выполнил следующую команду в терминале:
$ grep -r -i ini_set("include_path {path/to/project}
Aaa и обнаружил следующее:
ini_set("include_path", ini_get("include_path") . ";" . __CONFIG_PATH_LIBRARY_PEAR);
Замена ";"с помощью PATH_SEPARATOR исправил проблему.
Спасибо, Иаков!:)