2

我正在将 Windows perl/postgresql Web 应用程序移植到 CentOS。

postgresql.conf我有这些行:

custom_variable_classes = 'plperl'              # list of custom variable class names

plperl.use_strict = on

plperl.on_plperlu_init = 'require "/path/to/my/app/dev/area/MyModule.pm";'

在 Windows 2003 中,这允许我use MyModule;在 PostgreSQL 中放入 plperlu 函数,如果我已经转到带有 .pm 文件的路径并更改 ACL 以授予用户postgres“读取”和“读取和执行”权限,它们就可以工作。安全选项卡。

在 CentOS 6.4 上,我有点困惑。当我尝试定义一个调用 MyModule 的 plperlu 函数时,它给了我ERROR: Can't locate /path/to/my/app/dev/area/MyModule.pm in @INC.

我很困惑,因为 MyModule.pm 归我所有:我拥有 664 个烫发。我尝试了 665,但仍然没有运气:sudo -u postgres ls -l /path/to/my/app/dev/area/MyModule.pm报告Permission denied。据我认为我了解unix权限,665意味着“其他”有权读取和执行。

4

1 回答 1

0

我刚刚写了这篇文章,并意识到我最近才知道答案。

与我们的 Windows 设置不同,Linux 需要来自路径上所有目录的权限。于是我开始在路径上做 ls -l ,而且越来越短。一直是 644,直到接近顶部,我有一个 700。我做了 chmod 705(也 chmod 701 工作,之后我切换到那个),宾果游戏,sudo -u postgres ls可以看到它,我的 plperlu 功能也可以定义。

于 2013-09-27T18:49:11.620 回答