Python calibredb添加书本-通过cgi脚本

Python calibredb添加书本-通过cgi脚本,python,cgi,calibre,Python,Cgi,Calibre,我编写了一个python cgi脚本,它从html表单接收图书文件和一些文本。 脚本在temp dir:/opt/bibliotecha/tmp_bookcase/中毫无问题地保存文件,但是我尝试使用calibredb工具将其添加到calibre库中,但没有成功 我将有问题的部分隔离到下面的脚本中 #!/usr/bin/env python # -*- coding: utf-8 -*- import cgi import cgitb; cgitb.enable() print "Cont

我编写了一个python cgi脚本,它从html表单接收图书文件和一些文本。 脚本在temp dir:/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
我相信这个错误可能与这样一个事实有关:当从浏览器调用脚本时,它会使用不同的用户和组。但是calibre怎么能不抱怨呢

我发现一个线程似乎解决了同样的问题 他们还提到,calibre中运行的环境必须与php中的情况和控制台相同

但我真的不了解这种环境,从来没有听说过

有什么提示吗??:D


a

首先查看谁拥有该目录,以及当前用户将对该目录拥有哪些权限

这可以通过使用ls-l来完成。一旦确定了这一点,就可以使用chmod允许用户写入此目录

如果出于某种原因,您在运行实际的write命令时确实需要使用特定的用户,请参阅本文的答案: