首页 > 解决方案 > php:cli shell_exec 与 web shell_exec

问题描述

我整天都在处理这个问题,我想在后台生成一个带有 pandoc 的文档:

我有这个:

#!/bin/bash
tmp=$1
pdf=$2
/usr/bin/nohup /usr/bin/pandoc $tmp -f markdown -t latex --pdf-engine=xelatex -o $pdf 1>/dev/null 2>&1 &

我有这个 php:pandoc.php

<?php
$command = "/bin/bash /home/projects/sarebide/generate_pdf.sh /home/projects/sarebide/tmp/1607456639 /home/projects/sarebide/certified/extract_1.pdf"
shell_exec($command);

在 shell 中工作正常:

/bin/bash /home/projects/sarebide/generate_pdf.sh /home/projects/sarebide/tmp/1607456639 /home/projects/sarebide/certified/extract_1.pdf

ps结果:

ps aux | grep pandoc
pi        9004 51.0  6.2 170184 59232 pts/2    Sl   20:46   0:01 /usr/bin/pandoc /home/projects/sarebide/tmp/1607456639 -f markdown -t latex --pdf-engine=xelatex -o /home/projects/sarebide/certified/extract_1.pdf
pi        9012  0.0  0.0   7348   540 pts/2    S+   20:47   0:00 grep --color=auto pandoc

在使用 php 运行的 shell 中工作正常:

php pandoc.php

ps结果:

ps aux | grep pandoc
pi        9382  133  6.1 170184 58268 pts/2    Rl   21:05   0:01 /usr/bin/pandoc /home/projects/sarebide/tmp/1607456639 -f markdown -t latex --pdf-engine=xelatex -o /home/projects/sarebide/certified/extract_1.pdf
pi        8983  0.0  0.0   7348   528 pts/2    S+   20:46   0:00 grep --color=auto pandoc

但是当我通过网络执行它时:http://localhost/pandoc.php

ps结果:

ps aux | grep pandoc
pi        8983  0.0  0.0   7348   528 pts/2    S+   20:46   0:00 grep --color=auto pandoc

shell_exec 结果为NULL

shell 和 web 的用户是相同的:pi,shell 和 web 中 whoami 的结果是相同的。

其他一些带有 shell_exec 的命令很好。

我错过了什么吗?谢谢!

标签: phplinuxbashpdfpandoc

解决方案


推荐阅读