使用 php 返回码 77 执行系统命令

Posted

技术标签:

【中文标题】使用 php 返回码 77 执行系统命令【英文标题】:Execute system command with php return code 77 【发布时间】:2020-06-06 09:00:43 【问题描述】:

我正在尝试使用 libreoffice 将 word 文档转换为 pdf。该命令在终端中运行良好,但在我使用shell_exec()exec()php 编写的应用程序的控制器中它不起作用。 exec() 的 return_var 是 77,我认为这意味着:

错误的文件描述符

任何建议都将受到高度赞赏。

【问题讨论】:

退出代码 77 是“权限被拒绝”。不允许您的服务器进程执行所述二进制文件。 那么解决方法是什么? 这太宽泛了。和纯Linux相关。是否应该发布在 ServerFault 上?我不知道您的任何服务器细节能够帮助您抱歉。这里已经有很多帖子为什么单个二进制文件可以在 bash 中工作,但不是通过 PHP 的 exec,答案很简单:不同的环境。 谢谢伙计。这真的很有帮助。 【参考方案1】:

我有相同的错误代码,在命令行末尾添加“2>&1”得到了详细的错误:

(进程:24718):dconf-CRITICAL **:10:11:59.019:无法创建目录'/var/www/.cache/dconf':权限被拒绝。 dconf 将无法正常工作。

希望这将帮助某人获得详细的错误并找到解决方案。

示例代码:

exec('/usr/bin/soffice --headless --convert-to pdf ' . BASEPATH . 'test.docx 2>&1', $v_output, $l_return);
var_dump($v_output);
var_dump($l_return);

【讨论】:

【参考方案2】:

我添加了这个命令选项来修复它:

 -env:UserInstallation=file:///tmp/test

我的代码是:

  $command = "$bin -env:UserInstallation=file:///tmp/test --headless --convert-to pdf:writer_pdf_Export --outdir  '$pdfTmpDir' '$path' 2>&1";
  exec($command, $output, $code);

【讨论】:

以上是关于使用 php 返回码 77 执行系统命令的主要内容,如果未能解决你的问题,请参考以下文章

如何让php执行shell

在windows系统下的cmd下面执行php 命令,返回‘PHP’不是内部或外部命令,也不是可运行的程序。。

Python系统命令操作

在windows系统下的cmd下面执行php 命令,返回‘PHP’不是内部或外部命令,也不是可运行的程序。。

怎么用php命令执行php代码

PHP执行linux系统命令