【问题标题】:Invoking Wine From Apache从 Apache 调用 Wine
【发布时间】:2009-02-04 20:01:09
【问题描述】:

我有 Apache/2.2.11,使用 mod_python 3.3.1/Python 2.5 在 Gentoo linux 下运行。在我的 python 脚本中,我使用 wine(os.popen2 调用)调用了一个 win32 exe。这在 Apache 之外运行良好,但在 mod_python 下我得到:

wine: cannot open /root/.wine : Permission denied

在 /var/log/apache/error_log 中。我的 apache 安装没有作为 root 用户/组运行。有什么想法为什么要调查 /root/.wine?

【问题讨论】:

    标签: python apache mod-python wine


    【解决方案1】:

    这可能是因为$HOME 设置不正确...

    顺便说一句。你确定从 mod_python 调用 wine 是个好主意吗?

    如果你确定,这样的事情可能会奏效......

    from subprocess import Popen        
    
    HOME = '/the/home/of/www-data' #PLEASE edit
    proc = Popen(cmd, shell=False, stdin=PIPE,
                 stdout=PIPE, stderr=PIPE, close_fds=True,
                 cwd=HOME, env={"HOME":HOME)
    

    【讨论】:

    • 谢谢约翰内斯。你的回答让我明白了这一点:stackoverflow.com/questions/133860/…。我破解了 /etc/init.d/apache 文件以正确设置 $HOME。
    • 哦,使用 mod_python 中的 wine 是一个可怕的想法。遗留代码太多。它在重新编写的时间表上,但我肯定知道时间表是如何滑倒的。
    • :-) 我宁愿不破解 /etc/init.d/apache 因为在发行版升级后它可能会被重置...我认为最好在使用 Popen 时设置它。所以产生的另一个进程不能覆盖它...
    【解决方案2】:

    我也过得很艰难,做了很多研究,但都失败了。终于找到了最简单的方法,在/etc/init.d/httpd文件中添加'WINEPREFIX="/srv/www/.wine"'为:

    case $ARGV in
    start|stop|restart|graceful|graceful-stop)
        WINEPREFIX="/srv/www/.wine" $HTTPD -k $ARGV
        ERROR=$?
        ;;
    

    复制 /root/.wine to /srv/www/.wine 并将所有者更改为 apache(从根目录)。希望这能解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-02
      • 2013-01-04
      • 1970-01-01
      • 2011-01-02
      • 2010-11-25
      • 2012-07-18
      • 2011-04-04
      • 1970-01-01
      相关资源
      最近更新 更多