I’m basically new to PEAR (and PhpDocumentor); I installed PhpDocumentor using the PEAR CLI, and everything seemed to go fine… until I went to use it, at which point I got the following error:
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
I couldn’t find anything online about the error, so I uninstalled/reinstalled via the command line again without error, but I’m getting the same problem. Have I overlooked something? As I said I’m quite new to PEAR 🙂
Well, this question is comically old, but I just had this same issue and solved it after much head-scratching so I thought I’d share.
pear config-show as @ashnazg detailed and my
php_dir is set to
/usr/lib/php. I tried running
phpdoc -h from there and — voila! — it worked. So the issue for me was that PHP needed to know about this path. I edited php.ini (which for me is in /private/etc/php.ini) and edited
include_path to include
/usr/lib/php. Mine then looked like:
include_path = ".:/usr/lib/php"
After that, it works like a charm! Hope this helps someone else out there. FWIW, I’m on Snow Leopard and I installed phpdoc by running
sudo pear install phpdocumentor.
To figure out where PEAR is putting things, run
pear config-show. If PEAR had said earlier that it had successfully installed PhpDocumentor for you, then the file you’re looking for should be found in the
php_dir setting’s value (on my Mac, this is
It is necessary for this
php_dir value to be set in your include_path for most PEAR packages to function properly. Since
/usr/share/pear DOES appear to be in your include_path, as per the error you included above, I’d have to guess that your PEAR installation has its
php_dir set to some other location.
Now, if you want to change your PEAR installation to point to
/usr/share/pear, you need to understand something about how PEAR installs things. Many packages use
install-time text replacement, which puts YOUR installation’s settings into the package’s code itself. If you look back at your
pear config-show output, you’ll see several other *_dir settings (data_dir, bin_dir, www_dir, etc.). So, it’s important that these be set like you want them BEFORE you install your packages. Don’t worry though, it’s not too late for the packages you have installed already.
To change the PEAR settings, use
pear config-set (setting name) (setting value), like
pear config-set php_dir /usr/share/pear. Since only php_dir is absolutely necessary to be in your include_path, you can probably leave the other settings as they are. I usually make sure they all point into the same root directory, just to keep everything in one overall place.
Once you change ANY of these settings, you should run a
pear update of each and every package you already have installed. What this will do is perform that
install-time text replacement I mentioned earlier, but this time will use the settings that are current, i.e. the ones you’ve just finished setting. Run this on the PEAR main package first,
pear update --force pear… you’ll have to include the
--force flag because PEAR will realize you’re asking me to update the package when it’s already ‘current’ and stop itself. Once you’ve run this
update for ALL of your installed packages, your PEAR installation will have its files placed where your current
include_path is expecting to find them.
Does PhpDocumentor/phpDocumentor/phpdoc.inc exist? Does it exist in /usr/share/pear ? If the answers are “yes” and “no” respectively, then you need to add whatever dir PhpDocumentor is in to your include path.
Long story short, find phpdoc.inc, and then work from there.