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)
使用通过Composer安装的PHP CodeSniffer时出现此错误。
使用以下方式修复了该问题:
cd /path/to/app
rm -rf vendor/
composer update
Run Code Online (Sandbox Code Playgroud)
这可能不是最好的解决方案,但它不需要改变你的路径或其他任何东西.在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提供了更加可靠的结构
发现问题 - 我在 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)