【问题标题】:shell_exec command js-beautify not run workingshell_exec 命令 js-beautify 无法运行
【发布时间】:2019-02-27 13:14:52
【问题描述】:

我正在尝试在控制器中运行此代码

echo shell_exec(' echo 3');
echo shell_exec('cat m.html | js-beautify  --type html -o m.html ; echo 43');
echo shell_exec(' echo 53');

我得到了输出

3 53

当我通过命令行运行相同的命令时,m.html 也没有被美化,文件被美化了。

【问题讨论】:

  • 你应该尝试使用 js-beautify 的完整路径
  • 也没用
  • 好吧,您应该尝试捕获错误消息和退出代码。 Unix 和 linux 命令有退出代码和标准错误流是有原因的。我的猜测是你的当前目录没有 m.html 文件。
  • 我没有得到任何输出,这就是为什么我在命令后回显值。
  • 你应该对我上面写的内容做更多的研究。您应该尝试了解 stdout 和 stderr 流以及退出代码之间的区别。因为输出(stdout)只是一个不包含错误数据的流。

标签: php laravel js-beautify


【解决方案1】:

这很可能与路径有关。您需要提供 m.htmljs-beautify 可执行文件的完整路径。还要确保为 Web 服务器用户设置了相关的执行权限。

// get the location of m.html if it's in the same folder as your PHP file
$path = dirname(__FILE__) . '/m/html';
echo shell_exec("/path/to/js-beautify --type html -o $path -f $path');

可能值得删除 -o 文件并将输出转到标准输出,即传回您的网页,以便您可以查看它是否正在写入同一个文件。也许也检查时间戳?

另外我相信您可以直接将文件传递给 js-beautify(或使用 -f 标志),这意味着如果读取文件时出现错误,您会看到 js-beautify 的错误,而不是什么都没有。

【讨论】:

    最近更新 更多