Ошибка PHP CodeSniffer include_once - программирование
Подтвердить что ты не робот

Ошибка PHP CodeSniffer include_once

Я пытаюсь установить PHP CodeSniffer на OS X Mountain 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 существует, что меня сбивает с толку

4b9b3361

Ответ 1

Нашел проблему - я использовал разделитель Windows (с запятой) в include_path вместо Unix one (двоеточие), поэтому он должен был быть:

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

вместо

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

Ответ 2

В моей конфигурации PHP/путь просто не был там, где ожидал phpcs. Я решил это, создав символическую ссылку на недостающий путь.

перейти в каталог груши и запустить:

ln -s share/pear/PHP/ PHP

Ответ 3

Это, возможно, не лучшее решение, но оно не требует никаких изменений в вашем пути или что-то еще. В файле 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'):

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

Ответ 4

Я получил эту ошибку при использовании PHP CodeSniffer, установленного через Composer.

Исправлено:

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

Ответ 5

Если вы используете 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

Ответ 6

Удалите его и переустановите его с помощью компоновщика

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

Источник: https://tommcfarlin.com/php-codesniffer-with-composer/

Ответ 7

В моем случае - установив 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

Ответ 8

Для чего это стоит, я установил PHP с использованием homebrew (OS X). Первая установка была 5.6.3, но обновлена ​​с течением времени. По умолчанию ini файл вы можете найти расположение файла с помощью:

php -i | grep ini

на osx - все еще имели ссылки на пути к 5.6.3. Когда я обновил их - в частности, путь включения, все работало просто отлично; не требуется символических ссылок.

Ответ 9

Эта модификация 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();

Ответ 10

У меня возникла проблема с запуском phpcs в качестве непривилегированного пользователя, установив его через PEAR с правами root.

Исправление для меня заключалось в том, чтобы изменить разрешения, чтобы непривилегированный пользователь мог получить доступ к зависимостям:

chmod -R o+rx /usr/local/lib/php/