Reputation: 101
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
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
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
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
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