18

PHPCodeSnifferをOSXMountain Lionにインストールしようとしていますが、奇妙な問題が発生しているようです。

'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

Composerを介してインストールされたPHPCodeSnifferを使用すると、このエラーが発生しました。

それを修正しました:

cd /path/to/app
rm -rf vendor/
composer update
于 2013-04-02T03:26:27.530 に答える
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 に答える
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

問題が見つかりました-UNIXの区切り文字(コロン)の代わりにinclude_pathでWindowsの区切り文字(セミコロン)を使用していたので、次のようになっているはずです。

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

それ以外の

 .;/usr/lib/php/pear/share/pear/
于 2013-01-10T13:38:24.497 に答える
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

その価値のために、私は自作(OS X)を使用してPHPをインストールしました。最初のインストールは5.6.3でしたが、時間の経過とともにアップグレードされました。デフォルトのiniファイルで、次のファイルの場所を見つけることができます。

php -i | grep ini

osxで-5.6.3へのパス参照がまだありました。これらを更新したとき、特にインクルードパスは、すべて正常に機能しました。シンボリックリンクは必要ありません。

于 2015-01-31T16:58:23.470 に答える
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 に答える
0

phpcsを非特権ユーザーとして実行しようとして、rootとしてPEAR経由でインストールしたため、この問題が発生しました。

私にとっての修正は、非特権ユーザーが依存関係にアクセスできるようにアクセス許可を変更することでした。

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

PHPがINIファイルをスキャンする他のディレクトリ(phpinfo.phpにリストされている)に正しいパスを追加することで、これを解決しました。ターミナルから次の3つのコマンドを実行します。

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 に答える