PHP exec在apache2上工作,但不能在nginx上工作


PHP exec works on apache2 but not on nginx

我试图在php中使用exec启动unoconv。它适用于apache2,但不适用于nginx。我已经检查了我的php.ini和disable_functions不包含exec在apache2和nginx php.ini文件

我不熟悉unconv,但是我在将服务器从Apache移植到nginxexec时遇到了类似的问题。

nginx + php-fpmapache相比有一个最小的$PATH集,并且很可能您的unoconv不在该路径上。

您可以尝试修改您的PATH设置,但更好的方法是指定unoconv的绝对路径

可以使用

找到绝对路径
which unoconv

您还应该将错误输出重定向到stdout,这样您就可以确切地看到为什么unoconv没有开始

exec("/path/to/unoconv -param0 -param1 2>&1", $output);
print_r($output); //this should give failure reason

查看这篇文章:PHP exec()不运行所有命令

正如这篇文章所说:

问题是你正在从一个服务运行通知发送。Notify-send是一个与显示器交互的面向桌面的程序。但是nginx运行时不需要连接到显示器。

想象一下,例如,有3个人同时登录到计算机上,所有人都有不同的显示。当notify-send运行时,它不知道将通知发送到哪个显示器。

相关文章: