我试图在php中使用exec启动unoconv。它适用于apache2,但不适用于nginx。我已经检查了我的php.ini和disable_functions不包含exec在apache2和nginx php.ini文件
我不熟悉unconv,但是我在将服务器从Apache
移植到nginx
和exec
时遇到了类似的问题。
nginx
+ php-fpm
与apache
相比有一个最小的$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运行时,它不知道将通知发送到哪个显示器。