Apache2 Python';与WSGI和Apache一起运行时的工作目录
我有一个web应用程序,它将查询数据库并用数据创建Excel电子表格。在将文件发送到客户端计算机之前,我需要将电子表格保存到服务器磁盘。我正在使用Flask框架和openpyxl生成电子表格。在Flask的开发服务器上运行时,一切正常,但真正的服务器是带有WSGI的Apache2。当我在那里运行它时,当它试图保存电子表格时,会出现“权限被拒绝”错误。我不知道在Apache/WSGI中运行时Python的工作目录是什么Apache2 Python';与WSGI和Apache一起运行时的工作目录,apache2,mod-wsgi,Apache2,Mod Wsgi,我有一个web应用程序,它将查询数据库并用数据创建Excel电子表格。在将文件发送到客户端计算机之前,我需要将电子表格保存到服务器磁盘。我正在使用Flask框架和openpyxl生成电子表格。在Flask的开发服务器上运行时,一切正常,但真正的服务器是带有WSGI的Apache2。当我在那里运行它时,当它试图保存电子表格时,会出现“权限被拒绝”错误。我不知道在Apache/WSGI中运行时Python的工作目录是什么 是否有一种方法,可以在WSGI配置文件中更改工作目录,或者以某种方式控制它将保
是否有一种方法,可以在WSGI配置文件中更改工作目录,或者以某种方式控制它将保存到的位置?如果可能的话,我想使用相对路径进行保存(这使代码更便于移植),这就是为什么更改工作目录是最好的解决方案。您不应该更改工作目录 使用: 变量
在此
将包含该代码文件所在的目录。然后,您可以为与之相关的事物构造绝对路径
database = os.path.join(here, 'database.db')
请注意,在Apache中运行代码的用户仍然需要对该目录进行读/写访问
和往常一样,确保您阅读了文档。文件的相关章节包括:
here=os.getcwd()
No你不能使用getcwd(),因为mod_wsgi下的当前工作目录通常不在代码所在的位置。阅读引用的第一个链接,因为它解释了这一点。你是对的。getcwd()与os.path.dirname(\uuuuu文件)不同。请注意,\uuuu文件中的这些文件是额外的\uuuuu
WSGIDaemonProcess不适用于Windows。
database = os.path.join(here, 'database.db')