问题标签 [mod-perl2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
121 浏览

perl - 使用 Net::OpenID::Consumer 进行属性交换

如何获取电子邮件、名字、姓氏和国家/地区等属性?如何将以下参数附加到 URL?

0 投票
1 回答
296 浏览

perl - mod_perl and how to install missing libraries

i need your help because I need to migrate a Perl application, which appears to be based on something like a CMS called "Profile Manager Premium 4.0". The problem is, i'm trying to use an .htaccess file in order to configure the mod_perl module without having to resort to reload globally the apache daemon and this way harm everyone using it. The problem is there is a file called "pm.cgi" which appears to be the "entry point" for the application and I can't accomplish it to execute correctly, because in the apache error log appears the following message:

I managed to install some missing modules using the CPAN command but this "pmpre" module I couldn't (I don't know the exact name of the module in order to fetch this 'pmpre.cfg').

Furthermore, I'm not sure if I need to use mod_perl or mod_perl_2, but since I'm using Apache 2.2, but I found it seems to use mod_perl_2. So this way, I dropped inside the .htaccess file the following contents:

Anyway, I'm not fluent in Perl anyway, so please, I'm just an Web Developer with PHP/Javascript skills.

Anyway, thanks for any help in advance.

0 投票
1 回答
115 浏览

perl - 编写一个简单的 mod_perl 处理程序

我想编写一个简单的 mod_perl 处理程序,它返回本地时间,如本页所述(http://perl.apache.org/docs/2.0/user/handlers/intro.html),但是我在哪里可以找到这个文件访问它。

我使用的是 Ubuntu,但没有名为 MyApache2 的目录。那么在哪里可以找到这个文件来尝试这个功能呢?

0 投票
1 回答
290 浏览

perl - 在 mod_perl 处理程序的不同模块中使用方法

我想在不同的 perl 模块之间共享一个变量。所以我创建了一个名为 MyCache.pm 的 perl 模块,它保存了变量(在我的例子中是一个哈希变量):

现在我有两个处理程序。一个处理程序将调用 set 方法,另一个将调用 get 方法来访问信息。

这是 getter 处理程序:

现在我已经配置了 apache(通过 http.conf)来访问这些 perl 模块。我运行 setter 处理程序,然后运行 ​​getter,但没有输出。

在 error.log 中现在有一些条目:

这一行是 get 方法的三个调用。那么我做错了什么?如何解决问题并在不同的处理程序之间共享我的缓存变量?

0 投票
1 回答
112 浏览

perl - 如何将 perl 模块转换为 mod_perl 处理程序?

我有一些 perl 模块,它们集成在运行在 Web 服务器上的 cgi 脚本中。我怎样才能简单地将这些模块转换为 mod_perl 处理程序?

谢谢。

0 投票
2 回答
81 浏览

perl - 从另一个 perl 模块启动 mod_perl 处理程序

如何直接从另一个 perl 模块(称为 MyModule.pm)启动 mod_perl 处理程序(称为 MyCacheHandler.pm)。因为目前我正在通过网络浏览器启动处理程序,但使用 MyModule 调用它会更容易一些。

0 投票
1 回答
400 浏览

perl - binmode + mod_perl 2.0.5 + Parse::RecDescent = 分段错误

重要更新:问题与 Apache 或 mod_perl 无关。最简单的演示:

实际上binmode是由我的代码和open (ERROR, ">&STDERR");Parse::RecDescent 执行的。


原始问题:

我在 mod_perl 2.0.5 下的 Spreadsheet::WriteExcel 有问题 Apache 因分段错误而死,我发现它发生 require Parse::RecDescent在包内的语句上Spreadsheet::WriteExcel

strace 表明最后发生的事情是重复 STDERR:

我通读了代码Parse::RecDescent并注意到了类似的语句open (ERROR, ">&STDERR");

好吧,经过一些额外的实验后,我有了这个简约的 Plack 应用程序来重现段错误:

(其实我用的不是binmode层PerlIO::via::QuotedPrint,但是效果是一样的)

如果我不执行binmode(\*STDERR, ":via(PerlIO...,则 apache 不会出现段错误。

如果我不重复STDERR,则 apache 不会出现段错误。

如果我两者都做,它会出现段错误。

作为一种解决方法,我可以避免binmode在 STDERR 上使用,但这并不好。

关于应该在哪里以及如何解决这个问题的任何建议?

谢谢。

我的环境:

更新:相同的代码在过时的 Ubuntu 8.04 + perl 5.8.8 + mod_perl2 2.0.3 下运行良好

Upd2:FreeBSD 9.1 + perl 5.14 + mod_perl 2.0.8 -- 段错误重复

0 投票
1 回答
264 浏览

perl - 根据 mod_perl 中的 body 生成 Etag

我有一些生成动态内容的旧 mod_perl 代码。我被要求在每个回复中发送一个 Etag。

看起来这样做的方法可能是添加一个 mod_perl 处理程序,但是这个内容是动态生成的,所以我需要使 Etag 成为响应正文的校验和。我还没有找到一种方法来在 mod_perl 处理程序中获取响应正文的内容来校验它。

我应该如何根据 mod_perl 中的响应正文动态生成 Etags?

0 投票
1 回答
826 浏览

perl - 无法安装 Apache2::Const 模块

我已经安装了 Apache 2.2.25,mod_perl 2.0.7 在 Debian 7.1.0 上运行。在其安装期间 mod_perl 必须安装名为Apache2::Const的模块,但它没有。mod_perl 安装了来自同一组的模块,例如 Apache2::Access、Apache2::Connection、Apache2::RequestUtil。

因此,当我在 cpan shell 中使用此命令(i /Apache2::Const/)时,它会输出以下内容:

当我使用这个命令时(安装 Apache2::Const):

我试图运行:

但这没有帮助。

另外,当我运行以下脚本时:

它输出:

我尝试从 mod_perl 包手动安装这个模块(通过 Makefile.PL)。我还尝试重新安装 mod_perl。没有任何帮助。

所有其他 Apache2::* 模块都可以正常工作。

我真的需要安装Apache2::Const模块。感谢您的回复。

0 投票
1 回答
110 浏览

linux - mod_perl2 脚本中的某些二进制文件运行,而其他二进制文件不运行(尽管有 ls 可见性和 +x)

在带有 perl 5.10.1 的 CentOS 6.4 上的 Apache 2.2 上。

我正在尝试从 mod_perl 脚本中获取远程目录列表,该脚本显然(如果我die qx(id))运行为apache. 但我什至无法在ssh没有参数的情况下运行,只是让它打印它的帮助信息。所以这就是我在这个问题中要问的问题 - 这不是ssh无法连接。

死于:

和:

死于:

好的,所以,它可以找到它,看到它,并对其具有执行权限(对于 /usr/bin 和 /usr 也是如此。)但是然后:

死于空数组,所以我尝试了:

...死于:

为什么是这样?我怎样才能得到die qx(ssh)die qx(/usr/bin/ssh)死亡的期望值:

有趣的是,从 bash 提示符中我得到了这个:

那么......我怎样才能ls从一个不可用但又不可用的帐户运行ssh呢?它们都是程序,为什么它们在这里的行为不同?

更新:不只是ssh,但我无法弄清楚模式:gawktarping也不起作用。然而df, ls, dir,pwd都可以。但:

因此,它们都设置了所有“x”位(除了 ping 其一个“s”,但请参见下面的错误代码),例如,ssh并且dir具有相同的 ACL。那么,为什么应该ssh并且gawk未能提供任何输出却又成功了呢?(完整路径或没有。)dirls

更新:更令人困惑的是,/bin/gawk失败并显示相同的消息,但代码为 256,/bin/tar同样/bin/ping,代码为 512。

更新:好的,这部分是有道理的:如果我从命令行运行失败的二进制文件,然后echo $?立即运行,ssh给出 255,ping给出tar2,gawk给出 1。这些是我在 mod_perl2 中得到的缩小版本。因此,似乎返回码不是 0 的任何东西都不起作用。可能它正在输出到 STDERR,因此 STDOUT 不捕获任何内容,因此返回空白。

啊哈,这就是答案——将发布。