user1342600
user1342600

Reputation: 101

Wrong include_path for Codesniffer

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.

Upvotes: 9

Views: 7268

Answers (3)

Praveesh
Praveesh

Reputation: 1327

Working solution on macOs 10.15.5. PHP version used: 7.3.19, installed using homebrew. Pphcs was installed using pear using

sudo pear install PHP_CodeSniffer
  • Step 1. Identify the php version and the php.ini used php -i | grep ini. The output will be something similar to what is given below. Pay attention to the value Loaded Configuration File. The value corresponding to Loaded Configuration File is the file that we need to edit.
Loaded Configuration File => /usr/local/etc/php/7.3/php.ini
Scan this dir for additional .ini files => /usr/local/etc/php/7.3/conf.d
Additional .ini files parsed => /usr/local/etc/php/7.3/conf.d/ext-opcache.ini,
/usr/local/etc/php/7.3/conf.d/ext-xdebug.ini
user_ini.cache_ttl => 300 => 300
user_ini.filename => .user.ini => .user.ini
Supported handlers => ndbm cdb cdb_make inifile flatfile
init_command_executed_count => 0
init_command_failed_count => 0
  • Step 2. Identify the pear path with pear config-get php_dir. The output will be a path like /usr/local/share/[email protected]. Copy this path.

  • Step 3. Open the configuration file obtained in step 1 and add the following line to it include_path = "PATH OBTAINED IN STEP 2. In this case, include_path = "/usr/local/share/[email protected]"

In essence, what this does is to load all the Pear files when php cli loads.

Upvotes: 0

rynop
rynop

Reputation: 53539

On MacOS High Sierrra 10.3.2 it is 2 simple steps:

sudo cp /etc/php.ini.default /etc/php.ini
echo 'include_path = ".:'`pear config-get php_dir`'"' | sudo tee -a /etc/php.ini

The last line sets the include_path at the end of the /etc/php.ini file

Upvotes: 2

dneimeier
dneimeier

Reputation: 99

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

Upvotes: 7

Related Questions