1

好的,我想在开始之前我应该​​说,当谈到 OSX/BSD 的话题时,我是一个完整的 n00b。过去一周左右我才使用 MBP,并且一直在学习 HEAPS。尽管如此,尽管如此,我仍在努力解决一些事情,所以,请保持温柔。:)

好吧,继续我的问题。几天来,我一直在尝试设置本地开发环境。我已经激活了操作系统附带的 Apache 2.2 和 PHP 5.3.3。我还手动安装了 MySQL、Homebrew 并设置了 BIND(以便于虚拟主机管理)。一切似乎都运行良好,直到我意识到我还必须安装 PEAR。

不幸的是,我公司产品中的许多关键领域都严重依赖 PEAR 库,因此在继续之前,我必须确保所有这些都正常运行。要安装 PEAR,我执行了以下操作:

  1. $ cd /usr/local/
  2. $ curl http://pear.php.net/go-pear | 须藤 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. $伴侣/etc/php.ini
  11. 将“include_path”设置更改为:“.:/usr/local/PEAR”
  12. 保存并关闭 TextMate
  13. $ sudo apachectl 重启
  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

我可以验证这些文件的位置。它们确实存在并且位于正确的目录中。我的理解是,使用 '.:/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 库是有道理的。

鉴于我所提到的,还有其他人能想到任何理由或提供对此事的任何见解吗?谢谢堆!

编辑:

好的,这个问题已经解决了。我确实在终端中执行了以下命令:

$ 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 很好地解决了这个问题。

谢谢雅各布!:)

4

1 回答 1

1

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

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

于 2011-02-23T03:44:15.833 回答