【问题标题】:Php exec() and pandoc in server production服务器生产中的 PHP exec() 和 pandoc
【发布时间】:2014-10-24 19:43:44
【问题描述】:

当我尝试<?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)

【问题讨论】:

  • 这几乎总是归结为权限错误。
  • 我已经用su www-data测试了这个命令。

标签: php nginx exec pandoc


【解决方案1】:

我尝试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 定义环境变量 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 1970-01-01
    相关资源
    最近更新 更多