PHP CodeSniffer include_once错误

tha*_*nqa 17 php macos codesniffer

我正在尝试在OS X Mountain Lion上安装PHP CodeSniffer - 我似乎遇到了一个奇怪的问题

运行'phpcs'时出现以下错误:

PHP Warning:  include_once(PHP/CodeSniffer/CLI.php): failed to open stream: No such
file or directory in /usr/lib/php/pear/bin/phpcs on line 31

PHP Warning:  include_once(): Failed opening 'PHP/CodeSniffer/CLI.php' for inclusion
(include_path='.;/usr/lib/php/pear/share/pear/') in /usr/lib/php/pear/bin/phpcs on line 31

PHP Fatal error:  Class 'PHP_CodeSniffer_CLI' not found in /usr/lib/php/pear/bin/phpcs
on line 34
Run Code Online (Sandbox Code Playgroud)

文件/usr/lib/php/pear/share/pear/PHP/CodeSniffer/CLI.php存在,令我困惑

axe*_*ger 12

在我的配置上,PHP /路径不是phpcs所期望的.我通过创建缺少路径的符号链接来解决它.

转到pear目录并运行:

ln -s share/pear/PHP/ PHP
Run Code Online (Sandbox Code Playgroud)


Adr*_*eil 6

使用通过Composer安装的PHP CodeSniffer时出现此错误。

使用以下方式修复了该问题:

cd /path/to/app
rm -rf vendor/
composer update
Run Code Online (Sandbox Code Playgroud)


Har*_*arm 6

这可能不是最好的解决方案,但它不需要改变你的路径或其他任何东西.在phpcs文件中,您将找到一个部分:

if (is_file(dirname(__FILE__).'/../CodeSniffer/CLI.php') === true) {
   include_once dirname(__FILE__).'/../CodeSniffer/CLI.php';
else {
   include_once 'PHP/CodeSniffer/CLI.php';
}
Run Code Online (Sandbox Code Playgroud)

只需添加一个新的else,如果你的路径是正确的文件CLI.php(即'/usr/local/pear/share/pear/PHP/CodeSniffer/CLI.php'):

if (is_file(dirname(__FILE__).'/../CodeSniffer/CLI.php') === true) {
   include_once dirname(__FILE__).'/../CodeSniffer/CLI.php';
} else if (is_file('/usr/local/pear/share/pear/PHP/CodeSniffer/CLI.php')) {
   include_once '/usr/local/pear/share/pear/PHP/CodeSniffer/CLI.php';
} else {
   include_once 'PHP/CodeSniffer/CLI.php';
}
Run Code Online (Sandbox Code Playgroud)

最后但并非最不重要的是为更高版本和更新记录此更改.最后,解决方案必须是PHPCS的开发人员为查找CLI.php提供了更加可靠的结构


tha*_*nqa 0

发现问题 - 我在 include_path 中使用 Windows 分隔符(分号)而不是 Unix 分隔符(冒号),所以它应该是:

 .:/usr/lib/php/pear/share/pear/
Run Code Online (Sandbox Code Playgroud)

代替

 .;/usr/lib/php/pear/share/pear/
Run Code Online (Sandbox Code Playgroud)