2013-05-29 13 views
0

問題與錯誤修復Cygwin的Emacs的flycheck模誤差發現/ tmp和在Win7 phpcs運行XAMPP PHP

已經使用Emacs好幾年。最近決定嘗試Prelude版本(link to prelude)。安裝順利(在Cygwin的Win7上),但一直未能使用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(並且它可以從命令行運行),並且這裏沒有文件權限問題。我已將flychech-phpcs-standard變量設置爲c:/xampp/php/phpcs,按照flycheck.el @ ln2895-2903但未找到引發錯誤的條件。

[注意:當我嘗試重命名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\phpPATH

研究

我已經經歷了phpcs,cygwin的,和flycheck.el,包括自定義flycheck-phpcs標線,並有指示在這個問題上沒有取得任何進展。

我不確定這是否與[email protected](defun flycheck-temp-file-system (filename prefix)的意見有關。這些評論是關於使用Emacs對一個壓縮錯誤進行黑客攻擊的。無論如何,

如何解決這個問題?

任何意見或想法,進一步測試?任何人都有Cygwin flycheck在win7上工作?它是一個操作系統編譯問題嗎?腳本中的目錄路徑?

+0

目前,谷歌搜索這個錯誤問題,只會提出這個問題! –

+0

我在(Flycheck的github頁面)[https://github.com/lunaryorn/flycheck/issues/147] –

+0

的票上打開過這個問題我意識到我已經升級了phpcs,因此仍然存在問題:$ phpcs --version Squiz Pty Ltd.(http://www.squiz.com.au)的PHP_CodeSniffer版本1.4.5(穩定版)。注意,flycheck現在需要1.4.3 ... –

回答

0

這不是flycheck的錯誤!

[感謝存儲庫所有者給我一個明確的答案]。

flycheck-phpcs-standard不採取phpcs的路徑。我錯了。一旦我知道了,文檔的上下文更有意義。

發生了什麼事情是Cygwin環境路徑安裝不是在使用flycheck時運行的。 Phpcs本身被賦予一個unix類型的路徑tmp/flycheck23423.buffer-copy,並且無法運行它。臭了我!

爲了迴應這個新的問題,我試圖看看我能否讓Windows讀取這些路徑。好消息是,你可以,當然! This superuser QA was helpful.

這是你如何解決它

1)下載Windows junction tool從您將在CMD.EXE運行一個Windows文件夾。 編輯:看到評論,應該在win7中使用mklink。

2)C:\你\ CMD \路徑>junction \cygdrive\c \

... this will output ... 
Created: C:\cygdrive\c 
Targetted at: C:\ 

3)C:\你\ CMD \路徑>junction \tmp C:\cygwin\tmp

... this will output ... 
Created: C:\tmp 
Targetted at: C:\cygwin\tmp 

現在,打開一個PHP腳本在Emacs並打破它。有用! 它是phpcs能夠找到/ tmp/..。檢查它並返回錯誤消息。涼。

+0

在Win7中有mklink工具 - 找不到它或記住它是什麼。改爲... –