【发布时间】:2014-07-09 09:28:24
【问题描述】:
我正在尝试让我的项目在 Dancer(perl 5.16.3 和 centos 5.10)上运行,到目前为止,这是一次愉快的体验 - 直到我尝试将它部署到服务器上。
我决定做最简单的事情,并在帮助下将其作为 CGI 应用程序运行 来自 Dancer 发行版的默认 dispatch.cgi 脚本。
我使用了 Dancer::Deployment 手册中的默认 apache 设置,但是 有些不对劲。经过一天半工作的挣扎 项目我推断出以下奇怪的事情:在运行时 dispatch.cgi,我的项目能够从 sqlite 数据库中读取,但是它 无法写入数据库,所以 Dancer::Session::DBI 不工作 正确,因此问题。
如果我使用独立的 app.pl 或使用
运行项目plackup -E production -p 80 bin/app.pl
它工作正常并且能够将数据插入数据库。我试过改变 对 sqlite db 文件的 0666 权限,但它没有帮助。
那么为什么 sqlite 在作为 CGI 运行时会出现问题,以及如何解决这个问题?
【问题讨论】:
-
当在
cgi中运行时,脚本正在使用您的网络服务器的用户而不是脚本的所有者,并且该用户需要对 sqlite db 文件具有读/写权限。允许 apache 对 SQLite 文件的读/写权限,你应该已经准备好了。 -
嗯,是的。正如我所说,我什至使 dbase 文件普遍可写,但没有成功。我也将所有者更改为 apache 的用户 - 相同。
标签: apache perl sqlite cgi dancer