好吧,我想在开始之前我应该说,当谈到OSX / BSD的主题时,我是一个完整的n00b。过去一周左右我只有MBP,并且一直在学习HEAPS。尽管如此,尽管如此,我仍然试图围绕一些事情,所以,请温柔。 :)
好吧,关于我的问题。我一直在努力设置我的本地开发环境几天。我已经激活了操作系统附带的Apache 2.2和PHP 5.3.3。我还手动安装了MySQL,Homebrew并设置了BIND(以便更轻松地进行vhost管理)。在我意识到我还必须安装PEAR之前,一切似乎都运行良好。
不幸的是,我公司产品中的许多关键领域都严重依赖于PEAR库,因此我必须确保在继续之前全部正常运行。要安装PEAR,我执行了以下操作:
然后我查看了我们的一个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可以很好地解决问题。
谢谢雅各布! :)
答案 0 :(得分:1)
在项目中搜索set_include_path或public / Library / Pear /
看起来您可能正在某处添加include路径,并使用分号而不是PHP常量PATH_SEPARATOR,这将为您的操作系统提供正确的分隔符。