错误问题
已经使用Emacs几年了。最近决定尝试Prelude版本(link to prelude)。安装顺利进行(在Win7上使用Cygwin),但几天都无法使用php错误检查。我想让php错误检查与Flycheck一起工作。它现在对我不起作用。
目前,当我破解php脚本时, flycheck.el(@ ln2551)会返回2个错误:
Checker php returned non-zero exit code 1, but no errors from output:
Could not open input file: /tmp/flycheck4728Btc/myPhpFile.php
Checker definition probably flawed.
Checker php-phpcs returned non-zero exit code 1, but no errors from output:
Could not open input file: /cygdrive/c/xampp/php/phpcs
Checker definition probably flawed.
调试信息
1)。 Flycheck在Cygwin根/tmp
目录中写入缓冲区副本。见 flycheck.el(@ ln800):
此文件存在并且是已确认的可读缓冲区副本;它的文件权限没有问题(无论是chmod 777还是700,都是相同的错误。)
2)。 Phpcs位于c:/ xampp / php / phpcs,可以从命令行(cmd.exe和cygwin bash)调用,有或没有c:/ path;但不适用于cygdrive路径。 [这不起作用$ / cydrive / c / xampp / php / phpcs -h(有或没有.bat扩展名)。]我也确认了phpcs的良好安装(并且它可以从命令行工作),并且有这里没有文件权限问题。我已根据 flycheck.el @ ln2895-2903 将flychech-phpcs-standard
变量设置为c:/xampp/php/phpcs
,但未找到抛出错误的条件。
[注意:当我尝试重命名phpcs文件并指定phpcs.bat时,此错误确实消失了,但我不确定是否找到了检查程序,因为写入tmp文件错误仍然阻止了任何结果。另外,这破坏了我对phpcs命令的命令行使用。]
可以肯定的是,这是我的 php -v :
$ php -v
PHP 5.4.7 (cli) (built: Sep 12 2012 23:48:31)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
with Xdebug v2.2.1, Copyright (c) 2002-2012, by Derick Rethans
这是我的 phpcs 版本:
$ phpcs --version
PHP_CodeSniffer version 1.3.3 (stable) by Squiz Pty Ltd. (http://www.squiz.net)
在我的.bash_profile中有别名:
alias phpcs="c:/xampp/php/phpcs"
我的路径
上的c:\xampp\php
研究
我一直在浏览phpcs,cygwin和flycheck.el,包括自定义flycheck-phpcs标准行的说明,并没有在这个问题上取得任何进展。
我不确定这是否与 flycheck.el@800-824 (defun flycheck-temp-file-system (filename prefix)
上的评论有关。这些是关于使用Emacs破解压缩错误的评论。无论如何,
如何解决此问题?
有任何评论或想法可以进一步测试吗?任何人都有使用Cygwin在win7上工作的flycheck?它是一个操作系统编译问题吗?脚本中的目录路径在哪里?
答案 0 :(得分:0)
这不是flycheck的错误!
[感谢存储库所有者给我一个明确的答案]。
flycheck-phpcs-standard
没有走phpcs
的路径。我错了。一旦我了解了这一点,文档的上下文就更有意义了。
发生的事情是Cygwin环境路径安装不是使用flycheck时运行的。 Phpcs
本身被赋予unix类型路径tmp/flycheck23423.buffer-copy
并且无法运行它。发臭我!
为了回应新的问题,我试图看看是否可以让窗户读取这些路径。好消息是你可以,当然! This superuser QA was helpful.
这是您解决问题的方法:
1)将windows junction tool下载到Windows文件夹,然后在cmd.exe中运行它。 编辑:看评论,应该在win7中使用mklink。
2)C:\ your \ cmd \ path> junction \cygdrive\c \
... this will output ...
Created: C:\cygdrive\c
Targetted at: C:\
3)C:\ your \ cmd \ path> junction \tmp C:\cygwin\tmp
... this will output ...
Created: C:\tmp
Targetted at: C:\cygwin\tmp
现在,在emacs中打开一个php脚本并打破它。有用! 它是phpcs能够找到/ tmp / ..检查它,并返回错误消息。凉。