我在執行PHP的lessc編譯器時遇到了問題。我正在使用Symfony,並嘗試使用sfLESSPlugin,但一直不成功。我已經將代碼放入了一個過濾器,該過濾器在頁面呈現之前執行,以便每次頁面刷新時,我的LESS文件都會被編譯爲一個CSS文件(不想每次進行更改時手動重新編譯,至少在我開發的時候)。以下是我已經嘗試了不同的變化:如何從PHP執行LESS編譯器(使用Symfony)?
$fs = new sfFilesystem();
$command = '/Users/jordanb/node/node_modules/less/bin/lessc less/bootstrap.less css/bootstrap.css';
try
{
$fs->execute($command, null, array($this, 'throwCompilerError'));
}
catch (RuntimeException $e)
{
return false;
}
這會返回一個錯誤:「問題在執行命令」,與127更深的挖掘的Symfony的execute(),它調用proc_open(錯誤代碼)和然後proc_close()。一些在線研究告訴我,127的錯誤代碼意味着沒有找到該命令。
在命令行上運行完全相同的命令工作得很好。
爲了確保它不是權限問題,我在/ Users/jordanb/node/node_modules/less/bin/lessc上執行了chmod 777。仍然沒有工作。
我也試過只是「lessc」,而不是完整的路徑,這是行不通的。我在我的類路徑中添加了lessc,因此輸入「which lessc」給了我「/ Users/jordanb/node/node_modules/less/bin/lessc」。
我也試過一個簡單的:
shell_exec('lessc less/bootstrap.less css/bootstrap.css');
這似乎並沒有做任何事情。我將輸出打印到PHP錯誤日誌以及文本文件中,並且輸出在兩種情況下均爲空。我也嘗試在這種情況下使用完整路徑。