服务器生产中的Php exec()和pandoc

时间:2014-08-31 10:52:50

标签: php nginx exec pandoc

当我尝试<?php exec('/usr/bin/pandoc file -o file.pdf'); ?>时,没有创建任何文件。 除pdf格式外,所有格式均有效。

我认为问题在于配置服务器(debian 7 + nginx)和函数exec()

此命令/ usr/bin/pandoc file -o file.pdf在终端中有效。

感谢您的帮助

PHP shell_exec wait for script to done?

相同的问题

我在日志中遇到此问题:pandoc: PATH: getEnv: does not exist (no environment variable)

1 个答案:

答案 0 :(得分:2)

我尝试exec("pandoc --latex-engine=xelatex --from=markdown -s -S -o /tmp/pandoc.pdf --toc /tmp/pandoc > debug.log 2>&1");进行调试,因为没有出现任何错误。

日志文件显示未定义PATH。我认为因为这是执行此脚本的www-data。我必须定义这个全局变量。

所以我尝试用PATH=/usr/bin: pandoc --latex-engine=xelatex --from=markdown -s -S -o /tmp/pandoc.pdf --toc /tmp/pandoc来定义env var PATH,它的确有效! : - )

也可以在/etc/nginx/sites-available/yoursite.com中为nginx服务器(或带有apache的等效服务器)定义此变量

location ~ \.php$ {
    [...]
    include /etc/nginx/fastcgi.conf;
    fastcgi_pass unix:/tmp/php.socket;
    fastcgi_param PATH /usr/local/bin:/usr/bin:/bin:/your/path;
}

请参阅https://github.com/jgm/pandoc/issues/1587