簡體   English   中英

修復在運行xampp php的win7中找到/ tmp和phpcs的Cygwin Emacs flycheck-mode錯誤

[英]Fix Cygwin Emacs flycheck-mode errors finding /tmp and phpcs in win7 running xampp php

錯誤問題

已經使用Emacs兩年了。 最近決定嘗試Prelude版本(鏈接到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:/路徑; 但不適用於cygdrive路徑。 [這不起作用$ / cydrive / c / xampp / php / phpcs -h(帶有或不帶有.bat擴展名)。]我還確認phpcs的安裝正確(並且可以從命令行運行),並且有不是文件權限問題。 我已經按照flycheck.el @ ln2895-2903flychech-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-standard行的說明,並且在此問題上沒有取得任何進展。

我不確定這是否與flycheck.el@800-824 (defun flycheck-temp-file-system (filename prefix)上的注釋有關。這些都是關於用Emacs破解壓縮錯誤的注釋。無論如何,

如何解決這個問題?

有任何意見或想法可以進一步測試嗎? 有人讓Cycheck與Cygwin一起在win7上工作嗎? 它是操作系統編譯問題嗎? 腳本中的目錄路徑在某處?

這不是flycheck的錯誤!

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

flycheck-phpcs-standard沒有phpcs的路徑。 我錯了 一旦我知道了這一點,文檔的上下文就更有意義了。

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

作為對新消息的回應,我試圖查看是否可以讓Windows讀取這些路徑。 當然,好消息是您可以做到! 超級用戶質量檢查很有幫助。

這是解決方法

1)將Windows 聯結工具下載到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 /。 檢查它,並返回錯誤消息。 涼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM