我正在尝试在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存在,令我感到困惑
答案 0 :(得分:12)
在我的配置上,PHP /路径并不是phpcs所期望的。 我通过创建缺少路径的符号链接来解决它。
转到pear目录并运行:
ln -s share/pear/PHP/ PHP
答案 1 :(得分: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做了更坚实的构造
答案 2 :(得分:5)
答案 3 :(得分: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
答案 4 :(得分:1)
卸载它并使用composer重新安装
alias php=/Applications/MAMP/bin/php/php5.6.10/bin/php;
composer global require "squizlabs/php_codesniffer=*";
答案 5 :(得分:0)
发现问题 - 我在include_path而不是Unix one(冒号)中使用Windows分隔符(分号),所以应该是:
.:/usr/lib/php/pear/share/pear/
而不是
.;/usr/lib/php/pear/share/pear/
答案 6 :(得分: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
答案 7 :(得分:0)
为了它的价值,我使用自制软件(OS X)安装了PHP。首次安装是5.6.3,但随着时间的推移升级。默认的ini文件,您可以使用以下命令查找文件的位置:
php -i | grep ini
osx上的- 仍然有对5.6.3的路径引用。当我更新这些 - 特别是包含路径时,所有工作都很好;不需要符号链接。
答案 8 :(得分: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();
答案 9 :(得分:0)
我有这个问题尝试将phpcs作为非特权用户运行,并通过PEAR以root身份安装它。
修复我的方法是更改权限,以便非特权用户可以访问依赖项:
chmod -R o+rx /usr/local/lib/php/
答案 10 :(得分: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