18

我正在尝试在 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

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

4

11 回答 11

12

在我的配置中,PHP/ 路径并不是 phpcs 所期望的。我通过创建指向缺失路径的符号链接来解决它。

转到 pear 目录并运行:

ln -s share/pear/PHP/ PHP
于 2014-03-18T08:42:06.357 回答
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';
}

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

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';
}

最后但并非最不重要的一点是,为以后的版本和更新记录此更改。最后的解决方案必须是 PHPCS 的开发人员为找到 CLI.php 做一个更可靠的构造

于 2014-12-19T10:06:03.083 回答
6

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

修复它:

cd /path/to/app
rm -rf vendor/
composer update
于 2013-04-02T03:26:27.530 回答
1

如果您使用的是 MAMP,请在您的路径中包含以下内容:

export PATH=/Applications/MAMP/bin/php/php5.X.XX/lib/php:$PATH

通过将 5.X.XX 替换为您的 php 版本。就我而言,这是:

export PATH=/Applications/MAMP/bin/php/php5.4.26/lib/php:$PATH
于 2014-07-17T21:09:51.960 回答
1

卸载它并使用composer重新安装它

alias php=/Applications/MAMP/bin/php/php5.6.10/bin/php;
composer global require "squizlabs/php_codesniffer=*";

来源:https ://tommcfarlin.com/php-codesniffer-with-composer/

于 2016-09-29T23:15:38.740 回答
0

就我而言——安装了PHP-OSX——我必须像这样修复符号链接:

cd /usr/local/php5/lib/php/PHP

接着:

ln -s /usr/local/share/pear/PHP/CodeSniffer
ln -s /usr/local/share/pear/PHP/CodeSniffer.php
于 2014-10-19T14:08:47.157 回答
0

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

 .:/usr/lib/php/pear/share/pear/

代替

 .;/usr/lib/php/pear/share/pear/
于 2013-01-10T13:38:24.497 回答
0

值得一提的是,我使用 homebrew (OS X) 安装了 PHP。第一次安装是 5.6.3,但随着时间的推移升级。默认的ini文件,你可以通过以下方式找到文件的位置:

php -i | grep ini

在 osx 上 - 仍然有对 5.6.3 的路径引用。当我更新这些 - 特别是包含路径时,一切正常;不需要符号链接。

于 2015-01-31T16:58:23.470 回答
0

我有这个问题试图以非特权用户身份运行 phpcs,通过 PEAR 以 root 身份安装它。

对我来说修复是更改权限,以便非特权用户可以访问依赖项:

chmod -R o+rx /usr/local/lib/php/
于 2017-10-02T14:24:14.590 回答
0

我通过将正确的路径添加到 PHP 扫描 INI 文件的另一个目录(它在 phpinfo.php 中列出)来解决它。从终端执行这三个命令:

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
于 2018-04-14T20:45:40.627 回答
0

这个D:\wamp\bin\php\php_VERSION\phpcs修改在 wamp 上对我有用

if (is_file(dirname(__FILE__).'/../CodeSniffer/CLI.php') === true) {
    include_once dirname(__FILE__).'/../CodeSniffer/CLI.php';
} else if (is_file(dirname(__FILE__).'/pear/PHP/CodeSniffer/CLI.php') === true) {
   include_once dirname(__FILE__).'/pear/PHP/CodeSniffer/CLI.php';
} else {
    include_once 'PHP/CodeSniffer/CLI.php';
}

$cli = new PHP_CodeSniffer_CLI();
$cli->runphpcs();
于 2016-02-03T00:31:18.340 回答