Возможная проблема с моим include_path OSX 10.6.6 + PHP 5.3.3 + PEAR - PullRequest
1 голос
/ 23 февраля 2011

Хорошо, я думаю, что прежде чем начать, я должен просто сказать, что я полный n00b, когда речь заходит о теме OSX / BSD.У меня был только MBP в течение прошлой недели или около того, и я изучал HEAPS.Хотя, несмотря на это, я все еще пытаюсь обернуть голову вокруг нескольких вещей, поэтому, пожалуйста, будьте нежны:)

Хорошо, к моей проблеме.Я пытался настроить свою локальную среду разработки в течение нескольких дней.Я активировал Apache 2.2 и PHP 5.3.3, которые пришли с ОС.Я также вручную установил MySQL, Homebrew и настроил BIND (для более легкого управления vhost).Все, казалось, работало довольно хорошо, пока я не понял, что мне нужно было также установить PEAR.

К сожалению, многие критические области в продуктах моей компании в значительной степени зависят от библиотеки PEAR, поэтому я должен был убедиться, что это всеи продолжить, прежде чем продолжить.Чтобы установить PEAR, я сделал следующее:

  1. $ cd / usr / local /
  2. $ curl http://pear.php.net/go-pear |sudo php
  3. $ php -q go-pear.php
  4. Выполните инструкции по установке PEAR
  5. $ mate ~ / .bash_profile
  6. Добавлено / usr/ local / bin к моей переменной $ PATH
  7. Сохраненный и закрытый TextMate
  8. $, который груша (проверил расположение исполняемого файла PEAR)
  9. $ php -r "phpinfo ();»|grep '.ini' (чтобы проверить местонахождение текущего php.ini)
  10. $ mate /etc/php.ini
  11. Изменен параметр 'include_path' на: ".: / usr / local /PEAR "
  12. Сохраненные и закрытые TextMate
  13. $ sudo apachectl restart
  14. Довольный результатами, я начинаю установку нескольких необходимых пакетов 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 исправил проблему.

Спасибо, Иаков!:)

1 Ответ

1 голос
/ 23 февраля 2011

Поищите в своем проекте set_include_path или public / Library / Pear /

Похоже, что вы где-то добавляете к пути включения и используете точку с запятой вместо константы PHP PATH_SEPARATOR, что дастВы правильный разделитель для вашей ОС.

...