我试图在php中使用exec启动unoconv。它适用于apache2,但不适用于nginx。 我已经在apache2和nginx php.ini文件中检查过我的php.ini和disable_functions不包含exec。
答案 0 :(得分:2)
我不熟悉unfv,但是我的服务器从Apache
移植到nginx
和exec
时遇到了类似的问题。
nginx
相比, php-fpm
+ $PATH
设置的最小apache
设置,并且您的unoconv
可能不在该路径上
您可以尝试修改PATH设置,但更好的方法是指定unoconv
的绝对路径
您可以使用
找到绝对路径which unoconv
您还应该将错误输出重定向到标准输出,这样您就可以确切了解为什么unoconv没有启动
exec("/path/to/unoconv -param0 -param1 2>&1", $output);
print_r($output); //this should give failure reason
答案 1 :(得分:0)
查看此帖子:PHP exec() does not run all commands
如本文所述:
问题是您正在从服务运行notify-send。 Notify-send是一个面向桌面的程序,它与显示器交互。但是nginx在没有附加到显示器的情况下运行。
想象一下,例如,有3个人同时登录到计算机,所有人都有不同的显示。当notify-send运行时,它不知道将通知发送到哪个显示器。