Wrong include_path for Codesniffer

pear, phpcodesniffer, xampp

Solution

There is an excellent article on how to get it up-and-running:

http://viastudio.com/configure-php-codesniffer-for-mac-os-x/

I followed the easy instructions and had it working in no time!

The secret is to fix the include path with these commands:

sudo mkdir -p /Library/Server/Web/Config/php

sudo touch /Library/Server/Web/Config/php/local.ini

echo 'include_path = ".:'`pear config-get php_dir`'"' | sudo tee -a /Library/Server/Web/Config/php/local.ini

Problem

This issue has been addressed before and I have tried to solutions offered and think I am doing something wrong. I am attempting to configure PHP Codesniffer on a Mac using Mountaion Lion. I don't think it matters, but I ma using XAMMP. I am getting the following error when I run phpcs. ``` Warning: include_once(PHP/CodeSniffer/CLI.php): failed to open stream: No such file or directory in /usr/bin/phpcs on line 31 Warning: include_once(): Failed opening 'PHP/CodeSniffer/CLI.php' for inclusion (include_path='.:') in /usr/bin/phpcs on line 31 Fatal error: Class 'PHP_CodeSniffer_CLI' not found in /usr/bin/phpcs on line 34 ``` This error, based on all the searching, is because of an incorrect include_path in php.ini. As I understand, this path is supposed to be the directory where pear resides. When I run pear config-get php_dir it returns /usr/lib/php/pear I expected this. So I modified the php.ini file (this file is the only php.ini on the system, so it is not grabbing the setting from another file) to read: ``` include_path = ".:/usr/lib/php/pear/" ``` This looks right, but I keep getting the same error. I have removed the leading .: and that does not help...and it shouldn't work. I also removed the trailing / and same result. Note that phpcs is in the usr/bin directory. Below is the result of running pear config-show ``` Configuration (channel pear.php.net): ===================================== Auto-discover new Channels auto_discover 1 Default Channel default_channel pear.php.net HTTP Proxy Server Address http_proxy <not set> PEAR server [DEPRECATED] master_server pear.php.net Default Channel Mirror preferred_mirror pear.php.net Remote Configuration File remote_config <not set> PEAR executables directory bin_dir /usr/bin PEAR documentation directory doc_dir /usr/lib/php/pear/docs PHP extension directory ext_dir /usr/lib/php/extensions/no-debug-non-zts-20090626 PEAR directory php_dir /usr/lib/php/pear PEAR Installer cache directory cache_dir /private/tmp/pear/cache PEAR configuration file cfg_dir /usr/lib/php/pear/cfg directory PEAR data directory data_dir /usr/lib/php/pear/data PEAR Installer download download_dir /private/tmp/pear/download directory PHP CLI/CGI binary php_bin /usr/bin/php php.ini location php_ini /private/etc/php.ini --program-prefix passed to php_prefix <not set> PHP's ./configure --program-suffix passed to php_suffix <not set> PHP's ./configure PEAR Installer temp directory temp_dir /JimS/temp PEAR test directory test_dir /usr/lib/php/pear/tests PEAR www files directory www_dir /usr/lib/php/pear/www Cache TimeToLive cache_ttl 3600 Preferred Package State preferred_state stable Unix file mask umask 22 Debug Log Level verbose 1 PEAR password (for password <not set> maintainers) Signature Handling Program sig_bin /usr/local/bin/gpg Signature Key Directory sig_keydir /private/etc/pearkeys Signature Key Id sig_keyid <not set> Package Signature Type sig_type gpg PEAR username (for username <not set> maintainers) User Configuration File Filename /Users/JimS/.pearrc System Configuration File Filename /private/etc/pear.conf ``` Any ideas? I am prone to typos, so that is always a possibility, so everything I put here is cut/paste.

Original source