问题标签 [cgi-application]

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 投票
2 回答
1087 浏览

perl - CGI::Application 应用程序的 nginx fastcgi 配置

我正在尝试让 C::A 应用程序在 nginx fastcgi 环境(debian 6.0)中工作并使用 spawn-fcgi。

C::A 路由配置使用$self->mode_param( path_info=> 1, param => 'rm' );

问题是无论我请求什么 C::A 应用程序网址(等),它总是显示主页,这就是它example.com/cities所做的。example.com/profile/99example.com/index.pl

我的 nginx 设置是

我已经以类似的方式成功设置了几个 php 应用程序。

但是,在这种情况下,我怀疑我没有将必要的内容传递fastcgi_param给它所要求的 C::A。

你有什么想法?

0 投票
1 回答
847 浏览

perl - Perl CGI::Session save_param 将所有参数保存为一个键下的数组

CGI::Session用来存储会话数据CGI::Application(特别是我CGI::Session通过CGI::Application::Plugin::Session模块使用)。在我的一种应用程序模式中,我这样做:

要将我的参数保存到会话数据中,但是在使用检索它们时,$self->session->param('user')我发现只有用户参数包含任何数据,即使其他参数正在发送到服务器端并且可以通过$q->param()从会话中检索到的用户参数访问参数数组,但是我希望这$self->session->param('user')将返回一个包含参数“用户”内容的字符串。
这种行为是预期的吗?
如果是,为什么?

0 投票
1 回答
426 浏览

perl - Perl nginx REST CGI::Application

我正在尝试将一个简单的基于 CGI::Application::Dispatch 的 REST 应用程序从 Apache 服务器转换为 Nginx。该应用程序在 Apache 下运行良好,但在 Nginx 下运行时,只有 Dispatch 请求的根层工作——即 /app。路径的任何其他部分,例如 /app/doit,都会导致调用失败并显示 Forbidden。

我怀疑我需要更改将 URL 传递给 fastcgi 的方式,但我不清楚如何拆分它。我能够找到的大多数示例都是在存在 dispatcher.cgi 类型的脚本时进行拆分,但是由于 C:A:D 期望被称为 /app 并期望看到 URL 的 /doit 部分,所以我我不确定如何实现它。

我当前的位置块是:

Apache 中的设置非常简单:

0 投票
2 回答
214 浏览

perl - Perl - CGI::Application - 从数据库创建会话变量

我在数据库中存储了一堆配置变量,可通过以下查询访问键值对:

我想将这些键/值对加载到 CGI::Applicaiton 会话中。目前这是通过手动完成的(所以不是来自数据库,而是硬编码)

对于一堆键值对。使用 DBI 和某种形式的循环是否有更明智的方法?

谢谢

0 投票
0 回答
61 浏览

dbix-class - 辅助 perl 子例程未在分叉进程中返回

我遇到了一个奇怪的错误,希望有人能提供帮助。我试图在下面提供尽可能多的背景,但不涉及太多细节,但很高兴澄清任何令人困惑的事情。


我目前正在开发一个使用 Perl 进行后端服务器处理的网络应用程序。基本上,用户请求从浏览器的 PostgreSQL 数据库中处理和返回一些数据。有时这需要很短的时间,我可以在服务器超时错误发生之前将数据返回给用户。对于较大的请求,我会分叉后端流程,并在准备好后向用户发送一封电子邮件,并附上数据。

使用CGI::Application我有一个运行模式,它调用这个子进程,它分叉后端进程并将父进程返回到一个页面,告诉用户他们将在数据准备好时收到一封电子邮件:

注意:这里的 dbixSchema 只是 cgi 初始化时创建的数据库模式对象(数据库连接和数据库处理程序),允许我连接到 PostgreSQL 数据库,并直接在 Perl 中运行查询。

现在在另一个模块中,LongProcess我有一个子程序emailResultsToUser,它可以完成对数据库的所有访问、数据处理和向用户发送电子邮件(在精简版中):

子 emailResultsToUser {

并在辅助子中:

问题

无论出于何种原因getData,都会调用并且一切运行顺利(如错误日志中的各种打印语句所示 - 我已省略),但子例程永远不会返回到调用者(即emailResultsToUser),因此emailResultsToUser永远不会完成。getData只是挂在它的 return 语句上,没有任何错误的迹象。我能够打印从数据库返回的结果,并且我可以验证数据处理是否发生并且 a%resultHash已完成。

我不确定为什么会发生这种情况。我已经设法将其确定为可能连接到 postgreSQL 数据库。如果我不将 dbixSchema 传递给孩子(是的,我会收到一个未在孩子中定义的错误),emailResultsToUser如果我my $userData = $self->getData();eval{}. 即使我没有从父级传递 dbixSchema 对象并在子级中创建一个新对象,也会发生相同的“错误”。

有什么想法吗?

0 投票
1 回答
262 浏览

perl - CGI::Application::Plugin::REST 实例脚本

我正在尝试使用CGI::Application::Plugin::REST构建一个 Restful 服务,但我不确定如何实际构建脚本。是否与使用 CGI::Application 相同,所以下面将是使用 Perl 库路径的实例脚本引用模块?

我承认我可能正在向后学习 CGI::Application,并且正在寻找一个简单的出路,因为一旦框架完成,其余的都是可以实现的。我也不想使用 MVC 框架,因为我想从头开始构建它。我在这里先向您的帮助表示感谢。

0 投票
1 回答
98 浏览

json - CGI::Application::Plugin::JSON - json_body 向后返回

我想知道是否有人知道为什么这个返回与CGI::Application::Plugin::JSON倒退

输出如下:

{"message":"I should be AFTER result","result":"1"}

我会假设它会从键/值对从左到右格式化 JSON,记住它是向后的是可以的,但我有很多返回要处理,客户端的验证是用“结果”完成的价值,所以如果我只是错过了一些东西,我想让它像输入一样输出。

编辑

另外我只是注意到它没有返回 JSON Boolean 类型对象,因为"result":"1"它将反序列化为 sting 对象而不是 JSON Boolean。有没有办法让它输出"result":1

感谢您提供的任何帮助。

0 投票
1 回答
101 浏览

perl - CGI::Application param() 未设置

我有一段代码CGI::Application用作它的基础,但有些东西不能正常工作。

当我尝试通过它设置某些东西时,$Template->param()它似乎没有设置。 $Template等于$self->load_tmpl($template);

我要保存的部分是:

我知道\%a_hash_ref包含预期值。它有一个类似的形式:

另外,如果我这样做

它不保存,但是

确实,where$Pagination也是一个 hash_ref。

我知道所有的值都是它们应该的值,并且我还尝试了一些简单的字符串,它们应该可以工作,但它们没有设置。我知道这一点,因为当我跑步时:

它输出它应该设置的所有变量,但'Hey!xD'缺少预期的变量(包括字符串)。我也知道它实际上运行代码,因为这个 die Dumper 在我尝试设置值之后。

模板文件包含这段代码:

$(document).ready(function () { mainFunction('[%symbol%]'); });

任何帮助,将不胜感激。

编辑:

这是赋予参数的内容:

[ { 'date' => '2006-07-05', 'avg_gain' => undef, 'bollinger_mid' => '32.80000', 'symbol' => 'BBQ' }, { 'date' => '2006- 04-04', 'avg_gain' => undef, 'bollinger_mid' => '34.55656', 'symbol' => 'AAPL' } ... ]

0 投票
1 回答
459 浏览

perl - Perl CGI::Fast 关闭连接而不发送数据

我正在尝试部署一个CGI::Application通过 Nginx 使用的 Perl 应用程序,使用 FastCGI 在它们之间进行通信。

Nginx 不断返回“502 Bad Gateway”,错误日志充满了这个:

2015/02/03 12:40:03 [错误] 11209#0: *2 上游过早关闭连接,同时从上游读取响应标头,客户端:10.1.1.23,服务器:www.example.com,请求:“GET /test .fcgi HTTP/1.1”,上游:“ http://127.0.0.1:5001/test.fcgi ”,主机:“www.example.com”

这是 Nginx 站点配置:

CGI::Fast为了查看问题是否出在 Perl 应用程序本身,我根据文档中的测试代码创建了一个新的 fcgi 应用程序:

当我运行时./test.fcgi,我可以看到netstat它已绑定到端口 5001。当我在浏览器中访问 URL 时,使用这个超级简单的应用程序仍然得到 502。错误日志中没有Carp正在写入的内容。

由于应用程序的启动时间长,我不想使用纯 CGI(通过包装脚本),而且我无法将整个应用程序转换为 Plack/PSGI。

我如何才能弄清楚为什么 Nginx 不会与 Perl 对话CGI::Fast,甚至不会与文档中的简单示例对话?

0 投票
0 回答
88 浏览

perl - Perl CGI::Application 写入文档文件

我正在尝试在 perl 5.8 中生成一个文件,该文件从 xml 文件(具有 utf-8 编码)读取并生成一个 word 文档。当我在命令行运行代码时,它运行良好。

从 CGI::Application 运行相同的代码时,它会忽略 unicode 字符并错过注释。

这是代码:

我尝试设置 binmode 但问题似乎出在 CGI::Application 在写入文档文件时忽略了 utf 编码。

当作为 perl 脚本运行时,我有以下代码可以很好地生成具有正确法语口音的 word 文档。

Perl 脚本

模块 XYZ 的代码如下:

但是当从 CGI 调用时,相同的模块会生成 word 文档,但没有法语口音。

Perl CGI 程序