2011-12-10 32 views
0

我試圖配置我的本地開發環境以讀取.less文件,以便在開發過程中可以編輯.less文件,並且僅當它轉換爲.css時時間去住。合理?我的MAMP測試服務器上的PHP腳本無法訪問node_module:less

我正在運行MAMP作爲我的本地測試服務器。我按照指示,我發現在這裏: http://programming-perils.com/155/parse-less-files-on-the-fly-and-serve-them-as-css/#comment-920

簡而言之,該計劃是使用htaccess文件捕獲請求.css文件,並將它們發送到PHP腳本編譯相同的名稱和的文件.LESS返回CSS代碼。

一切似乎都從命令行工作。我可以從命令行編譯一個.less文件並將其吐出css。我知道我的重寫規則正在工作,因爲我可以在瀏覽器中輸入url並查看我的php腳本的輸出。例如,如果我的PHP腳本調用echo shell_exec('pwd');,我將看到在瀏覽器中打印的路徑。

問題是,我不能讓腳本運行得更少,除非我以root用戶身份登錄本地主機。當我退出SSH並運行命令時,我得到「權限被拒絕」。我懷疑當我的PHP腳本嘗試調用這個時會發生這種情況...所以它不會返回任何內容。

我想這個問題歸結爲如何讓我的PHP腳本運行較少的編譯器?

更新!我解決了這個問題...

事實證明,less命令(path/path/lessc)需要sudo'ed。 PHP沒有這樣做,所以shell_exec()命令沒有返回任何東西。這就是爲什麼我的回聲陳述DID有效。

有很多方法來避開這個,但我確定編輯sudo visudo的sudoers列表對我來說是最好的。 this post上有很多有用的提示。通過試驗和錯誤,我發現PHP使用www-data帳戶。加入這一行固定我的問題:

www-data ALL=(ALL) NOPASSWD: /var/root/node/npm/node_modules/less/bin/lessc 

東西要記住的是,你還是要須藤添加到被送入了shell_exec命令()。希望這對別人有幫助。

+0

嗨艾默生,我是作者,如果你指的是文章。當我提出這個解決方案時,我遇到了類似的問題,對不起,我之前沒有注意到這個問題,很高興你能夠正常工作。 –

回答

0

事實證明,需要更少的命令(路徑/路徑/ lessc)被sudo'ed。 PHP沒有這樣做,所以shell_exec()命令沒有返回任何東西。這就是爲什麼我的回聲陳述DID工作...

請參閱我對上述問題的編輯。

0

也許它會更容易,如果你使用PHP實現lesscss的:lessphp

+0

這是一個有趣的想法。直到現在我還沒有聽說過它。我的主要猶豫是,如果意外上傳到服務器,我不希望我的.less文件正常工作。我只想在開發過程中使用無文件。然後只有.css文件才能上線。如果項目中包含lessphp,則可能會忽略它,並且無用的文件可能不會被檢測到。 – emersonthis

相關問題