我的MAMP测试服务器上的PHP脚本不能访问node_module: less


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/评论- 920

简而言之,计划是使用一个htaccess文件捕获对。css文件的请求,并将它们定向到一个PHP脚本,该脚本编译同名的。less文件并返回css代码。

一切似乎都在从命令行工作。我可以从命令行编译一个.less文件,它会输出css。我知道我的重写规则是有效的,因为我可以在浏览器中输入url并看到php脚本的输出。例如,如果我的PHP脚本调用echo shell_exec('pwd');,我将在浏览器中看到打印的路径。

问题是,我不能得到较少的脚本运行,除非我SSH到本地主机作为根。当我退出SSH并运行命令时,我得到"Permission denied"。我怀疑这就是当我的PHP脚本试图调用这个时发生的事情…所以它不返回任何东西

我想这个问题归结为我怎么能让我的PHP脚本运行更少的编译器?

更新!

结果是less命令(path/path/lessc)需要被sudo'ed。PHP没有这样做,所以shell_exec()命令没有返回任何东西。这就是为什么我的echo语句没有起作用。

有很多方法可以回避这个问题,但我确定用sudo visudo编辑sudoers列表最适合我的目的。这篇文章里有很多有用的建议。通过反复试验,我发现PHP使用www-data帐户。添加这一行修复了我的问题:

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

需要记住的是,您仍然必须在提供给shell_exec()的命令中添加sudo。希望对大家有所帮助。

如果您使用PHP实现的lesscss: lesssphp

可能会更容易。

结果是less命令(path/path/lessc)需要被sudo'ed。PHP没有这样做,所以shell_exec()命令没有返回任何东西。这就是为什么我的echo语句没有工作…

请参阅我对上述问题的编辑