Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP代码嗅探器包含一次错误_Php_Macos_Codesniffer - Fatal编程技术网

PHP代码嗅探器包含一次错误

PHP代码嗅探器包含一次错误,php,macos,codesniffer,Php,Macos,Codesniffer,我正试图在OSX Mountain Lion上安装PHP代码嗅探器——我似乎遇到了一个奇怪的问题 运行“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

我正试图在OSX Mountain Lion上安装PHP代码嗅探器——我似乎遇到了一个奇怪的问题

运行“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存在,这让我很困惑

发现了问题-我在include_路径中使用了Windows分隔符(分号),而不是Unix分隔符(冒号),因此应该是:

 .:/usr/lib/php/pear/share/pear/
而不是

 .;/usr/lib/php/pear/share/pear/

我在使用通过安装的PHP CodeSniffer时遇到了这个错误

修正了它:

cd /path/to/app
rm -rf vendor/
composer update

在我的配置中,PHP/path不是phpcs所期望的。 我通过创建指向丢失路径的符号链接解决了这个问题

转到pear目录并运行:

ln -s share/pear/PHP/ PHP

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

export PATH=/Applications/MAMP/bin/php/php5.X.XX/lib/php:$PATH
用php版本替换5.X.XX。就我而言,这是:

export PATH=/Applications/MAMP/bin/php/php5.4.26/lib/php:$PATH
在我的情况下——安装之后——我必须像这样修复符号链接:

cd /usr/local/php5/lib/php/PHP
然后:

ln -s /usr/local/share/pear/PHP/CodeSniffer
ln -s /usr/local/share/pear/PHP/CodeSniffer.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/local/pear/share/pear/php/CodeSniffer/CLI.php”):

最后但并非最不重要的一点是,为更高版本和更新记录此更改。
最终,解决方案必须是PHPC的开发人员为找到CLI.php做出更为坚实的构建。我使用自制(OS X)安装了php。第一次安装是5.6.3,但随着时间的推移进行了升级。默认ini文件,您可以通过以下方式找到文件的位置:

php -i | grep ini

在osx上-仍然有对5.6.3的路径引用。当我更新这些——特别是include路径时,一切都很好;无需符号链接。

D:\wamp\bin\php\php\u 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();

卸载它并使用composer重新安装

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

来源:

我试图以非特权用户的身份运行PHPC时遇到了这个问题,因为我是通过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

php默认包含列表中是否有
/usr/lib/php/pear/share/pear/
?(检查php.ini)这不是我所需要的,但让我找到了一个解决方案。ThxMy
pear
目录在我的用户文件夹中(
~/pear
),所以我必须将它添加到php.ini中的
包含路径中。我喜欢这种解决方案:)。谢谢你,先生,你救了我一天。我想这是一个比其他答案更好的答案,只需正确设置你的包含路径。
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