簡體   English   中英

我的MAMP測試服務器上的PHP腳本無法訪問node_module:更少

[英]PHP script on my MAMP testing server can't access node_module: less

我正在嘗試將本地開發環境配置為讀取.less文件,以便可以在開發過程中編輯.less文件,並且僅在上線時才轉換為.css。 說得通?

我正在運行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到本地主機,否則我無法運行較少的腳本。 當我退出SSH並運行命令時,我得到“權限被拒絕”。 我懷疑這是我的PHP腳本嘗試調用此操作時發生的情況...因此它什么也不返回。

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

更新! 我解決了這個問題

事實證明,需要對less命令( path/path/lessc )進行sudo'ed處理。 PHP並未執行此操作,因此shell_exec()命令未返回任何內容。 這就是為什么我的echo語句DID起作用的原因。

有很多方法可以避免這種情況,但是我認為使用sudo visudo編輯sudoer列表是我的最佳選擇。 這篇文章上有很多有用的技巧。 通過反復試驗,我發現PHP使用了www-data帳戶。 添加此行解決了我的問題:

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

需要記住的一點是,您仍然必須將sudo添加到提供給shell_exec()的命令中。 希望這對其他人有幫助。

原來,需要對less命令(path / path / lessc)進行sudo'ed。 PHP並未執行此操作,因此shell_exec()命令未返回任何內容。 這就是為什么我的echo語句DID起作用的原因...

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

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

暫無
暫無

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

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