【发布时间】:2010-06-09 10:45:58
【问题描述】:
我尝试用谷歌搜索这个问题,发现很多人有同样的问题但没有解决方案。
$result = exec("C:\\Ruby191\\bin\\lessc.bat less\\$file", $output);
这里result 是一个空字符串,output 是一个空数组。同样的事情:
$result = exec("cmd /c C:\\Ruby191\\bin\\lessc.bat less\\$file", $output);
我确定路径是正确的;我确定 exec() 已启用。
我尝试了exec、shell_exec、system,但没有成功。
lessc 是less CSS。
编辑
apache 错误日志说:
'"ruby.exe"' 未被识别为 内部或外部命令,可操作 程序或批处理文件。
【问题讨论】:
-
您是否尝试在路径名中使用正斜杠?你的 Apache 错误日志是怎么说的?假设您运行 IIS,然后查看相关链接:
-
@mario:谢谢,我不知道错误会记录在 apache 日志中。它说
'"ruby.exe"' is not recognized as an internal or external command, operable program or batch file.我怎样才能让它使用与普通shell相同的PATH? -
您可以将所需的目录显式添加到批处理脚本开头的路径中。您可以通过执行
cmd /c path并检查输出来检查当前路径设置。 -
我认为您可以在 .htaccess 或 httpd.conf 文件中尝试 SetEnv 和 PassEnv 指令。最终 Apache 出于某种安全原因对其进行了限制。但无论如何,也要尝试调整您的系统路径。 httpd.apache.org/docs/2.2/mod/mod_env.html