我试图在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存在,这让我很困惑
在我的配置中PHP/path不是phpcs所期望的。我通过创建指向丢失路径的符号链接解决了这个问题。
进入pear目录并运行:
ln -s share/pear/PHP/ PHP
这可能不是最好的解决方案,但它不需要更改路径或其他任何内容。在文件phpcs中,您将发现一个段落:
if (is_file(dirname(__FILE__).'/../CodeSniffer/CLI.php') === true) {
include_once dirname(__FILE__).'/../CodeSniffer/CLI.php';
else {
include_once 'PHP/CodeSniffer/CLI.php';
}
只需添加一个新的else if与您的路径到正确的文件CLI.php(即。"/usr/地方/梨/分享/梨/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';
}
最后但并非最不重要的是为以后的版本和更新记录此更改。最后,解决方案必须是PHPCS的开发人员为查找CLI.php
我在使用Composer安装的PHP CodeSniffer时遇到了这个错误。
修复:
cd /path/to/app
rm -rf vendor/
composer update
如果您正在使用MAMP,请将此包含在您的路径中:
export PATH=/Applications/MAMP/bin/php/php5.X.XX/lib/php:$PATH
通过替换5.X。您的php版本。在我的例子中,这是:
export PATH=/Applications/MAMP/bin/php/php5.4.26/lib/php:$PATH
使用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/
发现问题-我在include_path中使用Windows分隔符(分号)而不是Unix分隔符(冒号),所以它应该是:
.:/usr/lib/php/pear/share/pear/
不是 .;/usr/lib/php/pear/share/pear/
在我的情况下——已经安装了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
为了它的价值,我使用自制(OS X)安装PHP,第一次安装是5.6.3,但随着时间的推移升级。默认的ini文件,你可以用
找到文件的位置php -i | grep ini
在osx上-仍然有指向5.6.3的路径引用。当我更新这些-特别是包括路径,所有工作都很好;不需要符号链接
这个D:wampbinphpphp_VERSIONphpcs
修改在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();
我在尝试以非特权用户运行phpcs时遇到了这个问题,我已经通过PEAR以root身份安装了它。
我的解决方案是修改权限,使非特权用户可以访问依赖项:
chmod -R o+rx /usr/local/lib/php/
我通过将正确的路径添加到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