我编写了一个 python cgi 脚本,它接收书籍文件 + 来自 html 表单的一些文本。脚本可以毫无问题地保存文件(在临时目录中:/opt/bibliotecha/tmp_bookcase/),但是我正在尝试使用 calibredb 工具将其添加到 calibre 库,但我没有成功。
我将有问题的部分隔离到以下脚本中;
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import cgi
import cgitb; cgitb.enable()
print "Content-type: text/html"
print
import os, subprocess
tmp_upload_path = "/opt/bibliotecha/tmp_bookcase/"
tmp_path_book = tmp_upload_path + "Vila-Matas,Enrique-Dublinesque(NewDirections,2012).epubVila-Matas,Enrique-Dublinesque(NewDirections,2012).epub"
subprocess.call(["calibredb", "add", tmp_path_book])
如果我从终端调用脚本,它会做应该做的事情。
如果我从浏览器调用脚本,我会收到以下消息:
No write acces to /var/www/.config/calibre using a temporary dir instead
我相信这个错误可能与从浏览器调用脚本时它使用不同的用户和组这一事实有关。但口径怎么能不抱怨呢?
我发现一个似乎解决了同样问题的线程 https://bugs.launchpad.net/calibre/+bug/1299635 他们提到运行口径的环境必须在 php 中相同(在他们的情况下)和控制台。
但我并没有真正了解口径环境,从未听说过。
有什么提示吗??:D
一个