2016-12-02 97 views
2

我使用Vagrant在Symfony項目上工作。主機正在使用Windows。由於請求時間非常長,我決定在vm中安裝供應商文件,並且項目的整個「休息」都保留在同步文件夾(project root => /vagrant)內。在主機和遠程機器上使用PhpStorm的索引文件

一切工作正常,請求時間現在在100ms以下。但還有一個問題。我必須先在我的Windows機器上安裝vendor,然後再在vm上安裝,否則PhpStorm無法正確索引文件(我知道這是合乎邏輯的結果)。

所以我的問題是,如果有可能,舉辦一期工程在Windows機器上和文件例如"C:\Users\SampleUser\Project\ProjectX"下和vendor"/home/vagrant/vendor"下安裝,讓PhpStorm指數兩個目錄的文件?

否則我將不得不忍受這一個,代碼完成將無法工作。

Code completion and indexing not working at the moment

否則我將不得不在兩臺機器上安裝庫,以提高申請的時間,並有或多或少的「好」的工作流程。

我希望,我能解釋得夠好,我的實際問題是什麼。

非常感謝您的時間。

+0

我希望我能正確理解你......你必須讓你的庫可以在本地訪問(IDE正在運行 - IDE應該看到「本地」這樣的路徑)。它們的位置在哪裏 - 這是另一個問題。如果只能將它們安裝在虛擬機上,然後通過符號鏈接(例如)從Windows機器訪問它,那就這樣吧。但理想情況下,由於IDE通常需要快速訪問源文件,因此理想情況下您需要在本地一側使用(否則在編輯文件時可能會出現無意識的短暫減速) – LazyOne

+0

有多種方式可以「附加」非項目文件(例如作爲'PHP |包含路徑'..或者作爲附加內容根目錄)..但是它們都不支持網絡路徑(除非本地安裝到單獨的字母(網絡驅動器)或任何類型的符號鏈接 - 在這種情況下,IDE會看到它因爲本地文件和操作系統處理實際的實際路徑訪問)。換句話說 - 你不能告訴IDE直接使用遠程''/ home/vagrant/vendor''路徑。 – LazyOne

+0

好的。非常感謝你提供的信息。也用於重新格式化問題。這是我的第一個,將來我會照顧它。 是的,你說得對。編輯文件時,我也沒有考慮可能的減速。這似乎是'vendor'雙重安裝的另一個參數。 全部好的 – D3myon

回答

1

有同樣的確切問題。確實是一個無賴。

一個可能的解決方案將離開虛擬機上的vendor文件夾並手動將其複製到您的主機。

優點:

  • PHPStorm能夠索引文件

缺點:

  • 如果添加的依賴,你必須手動複製vendor文件夾中的某些部分主機

對於面臨相同問題的人,我可能會建議使用SFTP(工具 - >部署 - > PHPStorm中的配置) - 可以在不離開IDE窗口的情況下傳輸文件。這樣做的唯一的事情就是讓VM箱的密碼,這是位於
%USERNAME%/.vagrant.d/boxes/your box/box version/virtualbox/Vagrantfile

解決方法二:如果您使用VirtualBox的,你可以使用vm.synced_foldertype: "virtualbox"(同步是雙向的,主機< - >客戶),並將vendor文件夾留在您的項目中(使其始終同步)。

優點:

  • vendor文件始終保持最新狀態,無需手動工作

缺點:

  • 可怕的表現(測試自己)

如果您想要使用非virtualbox rsync (type: "rsync"),您將無法從客人同步回來(某人,如果我錯了,請糾正我),因此您將剩下第一個解決方案。

這將是巨大的,如果我們能包括vendor直接從虛擬機文件夾(使用某種rsync的/符號鏈接魔法)「語言&框架 - > PHP - >包括路徑」列表中,使用VirtualBox的時候至少,但噢...

+1

謝謝你的回覆。我後來做的是將供應商保留在vm中並通過samba共享目錄。然後我將它包含到PhpStorm中的php包含路徑中。但是這個解決方案也不太好。更多的解決方法,而不是實際的代碼。 – D3myon

+0

是的。 Symfony + Vagrant需要更好的解決方案。 Samba的性能如何? – kit

+0

我剛剛分享了供應商文件夾。由於它仍然在虛擬機上,只是用於索引,這是相當不錯的。另一個重要的事情是將緩存文件保存在虛擬機上。 – D3myon

相關問題