PHPCS не работает в командной строке?
Когда я набираю phpcs --version, вместо того, чтобы получить номер версии, я получаю что-то вроде этого:
/Applications/drupal/php/bin/phpcs: line 2: ?php: No such file or directory
/Applications/drupal/php/bin/phpcs: line 3: /Applications: is a directory
/Applications/drupal/php/bin/phpcs: line 4: Applications: command not found
/Applications/drupal/php/bin/phpcs: line 5: Applications: command not found
/Applications/drupal/php/bin/phpcs: line 6: Applications: command not found
/Applications/drupal/php/bin/phpcs: line 7: Applications: command not found
/Applications/drupal/php/bin/phpcs: line 8: Applications: command not found
/Applications/drupal/php/bin/phpcs: line 9: Applications: command not found
/Applications/drupal/php/bin/phpcs: line 10: Applications: command not found
/Applications/drupal/php/bin/phpcs: line 11: syntax error near unexpected token `newline'
/Applications/drupal/php/bin/phpcs: line 11: ` * @author Greg Sherwood <gsherwood@squiz.net>'
Похоже, что он не читает PHP правильно. Что я неправильно настроил?
Все, что я сделал, это установил PHP_CodeSniffer. Когда я запускаю его снова, я получаю:
pear / PHP_CodeSniffer уже установлен и совпадает с выпущенной версией 1.3.5
2 ответа
Когда PEAR выполняет установку PHP_CodeSniffer, он меняет первую строку в основном скрипте phpcs так, чтобы #!
строка указывает на исполняемый файл PHP в вашей системе.
Поэтому перед установкой строка выглядит так: #!@php_bin@
и после установки это будет выглядеть примерно так (в зависимости от того, где установлен PHP): #!/usr/bin/php
У PEAR есть параметр конфигурации, который сообщает, где установлен этот исполняемый файл PHP. Вы можете увидеть это значение, запустив pear config-show
и ищет ценность PHP CLI/CGI binary (php_bin)
, Вы должны убедиться, что это значение фактически является местоположением PHP в вашей системе, иначе все установки скриптов (например, PHPUnit) будут иметь аналогичную проблему.
Лучший способ проверить это значение - запустить which php
и установите это значение для переменной конфигурации PEAR. Затем переустановите PHP_CodeSniffer, чтобы замена была выполнена снова.
Так что для моей системы я бы сделал это:
$ which php
/usr/bin/php
$ sudo pear config-set php_bin /usr/bin/php
config-set succeeded
$ sudo pear uninstall php_codesniffer
uninstall ok: channel://pear.php.net/PHP_CodeSniffer-1.3.5
$ sudo pear install php_codesniffer
downloading PHP_CodeSniffer-1.3.5.tgz ...
Starting to download PHP_CodeSniffer-1.3.5.tgz (345,113 bytes)
......................................................................done: 345,113 bytes
install ok: channel://pear.php.net/PHP_CodeSniffer-1.3.5
Если все идет хорошо, вы должны увидеть правильный #!
строка в вашем новом файле phpcs:
$ which phpcs
/usr/local/bin/phpcs
$ head -n 1 /usr/local/bin/phpcs
#!/usr/bin/php
Если это выглядит правильно, вы сможете без проблем запустить команду phpcs.
Некоторое время я боролся с этим, но, наконец, понял: если команда PHP, которую вы вызываете напрямую, является оболочкой сценария оболочки вокруг реального исполняемого файла, вам нужно отредактировать первую строку сценария phpcs, чтобы вызвать PHP через / usr / bin / env:
#!/usr/bin/env /Applications/acquia-drupal/php5_3/bin/php
или просто
#!/usr/bin/env php
Полный контекст для поисковиков - до исправления:
~$ head -n 1 pear/bin/phpcs
#!/Applications/acquia-drupal/php5_3/bin/php
~$ phpcs --version
/Users/mryan/pear/bin/phpcs: line 2: ?php: No such file or directory
/Users/mryan/pear/bin/phpcs: line 3: /Applications: is a directory
/Users/mryan/pear/bin/phpcs: line 4: Desktop: command not found
/Users/mryan/pear/bin/phpcs: line 5: Desktop: command not found
/Users/mryan/pear/bin/phpcs: line 6: Desktop: command not found
/Users/mryan/pear/bin/phpcs: line 7: Desktop: command not found
/Users/mryan/pear/bin/phpcs: line 8: Desktop: command not found
/Users/mryan/pear/bin/phpcs: line 9: Desktop: command not found
/Users/mryan/pear/bin/phpcs: line 10: Desktop: command not found
/Users/mryan/pear/bin/phpcs: line 11: syntax error near unexpected token `newline'
/Users/mryan/pear/bin/phpcs: line 11: ` * @author Greg Sherwood <gsherwood@squiz.net>'
~$ /Applications/acquia-drupal/php5_3/bin/php pear/bin/phpcs --version
PHP_CodeSniffer version 1.4.5 (stable) by Squiz Pty Ltd. (http://www.squiz.com.au)
После исправления:
~$ head -n 1 pear/bin/phpcs
#!/usr/bin/env php
~$ phpcs --version
PHP_CodeSniffer version 1.4.5 (stable) by Squiz Pty Ltd. (http://www.squiz.com.au)
И теперь я могу настроить CodeSniffer в PhpStorm.