8

我基本上是 PEAR(和 PhpDocumentor)的新手;我使用 PEAR CLI 安装了 PhpDocumentor,一切似乎都很顺利......直到我开始使用它,此时我收到以下错误:

Warning: require(PhpDocumentor/phpDocumentor/phpdoc.inc): 
failed to open stream: No such file or directory in 
/usr/local/bin/phpdoc on line 40

Fatal error: require(): Failed opening required 
'PhpDocumentor/phpDocumentor/phpdoc.inc' (include_path='.:/usr/share/pear') 
in /usr/local/bin/phpdoc on line 40

我在网上找不到任何有关该错误的信息,因此我再次通过命令行卸载/重新安装而没有错误,但我遇到了同样的问题。我忽略了什么吗?正如我所说,我对 PEAR 很陌生 :)

谢谢。D

4

3 回答 3

4

要弄清楚 PEAR 把东西放在哪里,运行pear config-show. 如果 PEAR 之前说过它已经为您成功安装了 PhpDocumentor,那么您要查找的文件应该在php_dir设置的值中找到(在我的 Mac 上,这是/usr/lib/php/PEAR)。

php_dir为了使大多数 PEAR 包正常运行,必须在您的 include_path 中设置此值。由于/usr/share/pearDOES 似乎在您的 include_path 中,根据您上面包含的错误,我不得不猜测您的 PEAR 安装已将其php_dir设置为其他位置。

现在,如果您想将您的 PEAR 安装更改为指向/usr/share/pear,您需要了解有关 PEAR 如何安装的一些信息。许多包使用install-time text replacement,它将您的安装设置放入包的代码本身。如果您回头查看您的pear config-show输出,您会看到其他几个 *_dir 设置(data_dir、bin_dir、www_dir 等)。所以,在你安装你的包之前,按照你想要的方式设置这些是很重要的。不过不要担心,对于您已经安装的软件包来说还为时不晚。

要更改 PEAR 设置,请使用pear config-set (setting name) (setting value),如pear config-set php_dir /usr/share/pear。由于只有 php_dir 是绝对必要的,所以您可以保留其他设置。我通常确保它们都指向同一个根目录,只是为了将所有内容保存在一个整体位置。

一旦您更改了这些设置中的任何一个,您应该运行pear update您已经安装的每个包。这将执行install-time text replacement我之前提到的执行,但这次将使用当前设置,即您刚刚完成设置的设置。首先在 PEAR 主包上运行它,pear update --force pear...您必须包含该--force标志,因为 PEAR 会意识到您要求我在包已经“当前”时更新包并自行停止。一旦你update为所有已安装的包运行了这个,你的 PEAR 安装将把它的文件放在你当前include_path期望找到它们的地方。

于 2009-05-16T12:42:49.563 回答
4

好吧,这个问题已经很老了,但是我也遇到了同样的问题,并且在费了很多脑筋之后解决了它,所以我想分享一下。

pear config-show按照@ashnazg 的详细信息运行,我php_dir的设置为/usr/lib/php. 我试着phpdoc -h从那里跑——瞧! - 有效。所以对我来说问题是 PHP 需要知道这条路径。我编辑了 php.ini(对我来说位于 /private/etc/php.ini 中)并编辑include_path为包含/usr/lib/php. 我的然后看起来像:

include_path = ".:/usr/lib/php"

之后,它就像一个魅力!希望这对其他人有帮助。FWIW,我在 Snow Leopard 上,我通过运行sudo pear install phpdocumentor.

于 2012-01-24T19:18:57.750 回答
0

PhpDocumentor/phpDocumentor/phpdoc.inc 是否存在?它是否存在于 /usr/share/pear 中?如果答案分别是“是”和“否”,那么您需要将 PhpDocumentor 所在的任何目录添加到您的包含路径中。

长话短说,找到 phpdoc.inc,然后从那里开始工作。

于 2009-05-15T22:14:27.467 回答