我的include_path OSX 10.6.6 + PHP 5.3.3 + PEAR可能存在问题

时间:2011-02-23 03:40:44

标签: php macos pear include-path

好吧,我想在开始之前我应该​​说,当谈到OSX / BSD的主题时,我是一个完整的n00b。过去一周左右我只有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. $ which pear(验证了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等)。
  15. 然后我查看了我们的一个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
    

    我可以验证这些文件的位置。它们存在且位于正确的目录中。我的理解是,使用'。:/ usr / local / PEAR'的'include_path',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}
    

    Aaaand我发现了以下内容:

    ini_set("include_path", ini_get("include_path") . ";" . __CONFIG_PATH_LIBRARY_PEAR);
    

    更换“;”使用PATH_SEPARATOR可以很好地解决问题。

    谢谢雅各布! :)

1 个答案:

答案 0 :(得分:1)

在项目中搜索set_include_path或public / Library / Pear /

看起来您可能正在某处添加include路径,并使用分号而不是PHP常量PATH_SEPARATOR,这将为您的操作系统提供正确的分隔符。