2012-08-02 149 views
2

当我phpcs --version类型,而不是获得的版本号,我得到的是这样的:PHPCS未在命令行上运行?

/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 <[email protected]>' 

它看起来像它不读PHP正确。我错误配置了什么?

我所做的只是sudo pear安装PHP_CodeSniffer。当我再次运行它,我得到:

梨/ PHP_CodeSniffer已经安装并是一样的发布版本1.3.5

+0

尝试执行'php phpcs --version',所以'phpcs'文件与PHP解释器/可执行文件运行 – 2012-08-02 21:55:59

+0

这可行......但我无法让我的插件在NetBeans中工作,我认为它因为phpcs没有正确执行。 – 2012-08-03 19:34:16

+0

'当我尝试'php phpcs --version'时无法打开输入文件:phpcs' – Prateekro 2017-10-31 14:27:04

回答

14

当PEAR并安装一个的PHP_CodeSniffer,它改变了主要的第一行phpcs脚本,以便#!行指向您系统上的PHP可执行文件。

所以安装前,行看起来是这样的:#[email protected][email protected]和安装后,它会是这个样子(具体取决于安装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命令。

+0

我在我的phpcs文件顶部有正确的行 - 它匹配我的php二进制文件的位置 - 但它仍然无法正确运行。它确实运行,如果我从父目录做php phpcs --version。 – 2012-08-03 15:29:12

+0

我可以让PHPCS输出你看到的唯一方法是实际删除第一行,或者在它之前放置一些内容(#!必须是该文件的第一个内容)。是否有可能在坏的安装(甚至换行符)的顶部有一些奇怪的字符? – 2012-08-03 23:15:26

+0

这是我看到的: '[pattie @ Pattie-Reavess-MacBook-Pro〜] $ head -n 1/Applications/drupal/php/bin/phpcs #!/ Applications/drupal/php/bin/php ' – 2012-08-06 14:11:14

4

我苦苦挣扎了一段时间,但终于弄清楚了 - 如果您直接调用的PHP命令是真实可执行文件的shell脚本包装器,则需要编辑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 <[email protected]>' 
~$ /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) 

现在我可以在PhpStorm配置CodeSniffer。

+0

这为我工作,重新安装后没有。谢谢! – 2013-07-08 17:36:56