views:

564

answers:

2

Hi there.

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 :)

Thanks. D

A: 

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.

Frank Farmer
Hi there. Thanks for answering. I've just had a look... no, phpdoc.inc doesn't seem to exist anywhere. Nor exists the dir /usr/share/pearHmm. Dodgy pear installation maybe?Actually, I just checked some of the installed packages. MDB2 is installed for instance, but a require_once in a script throws a fatal error. I probably haven't set an include path or something?
+2  A: 

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 /usr/lib/php/PEAR). 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.

ashnazg