标签: cgi

如何为 CGI 脚本设置 Perl 的 @INC?

我有以下最简单的 Perl CGI 脚本:

use strict;
use warnings;
use CGI();
use CGI::Carp qw(fatalsToBrowser);

use Template;

print CGI::header();

foreach(@INC) {
    print "$_\n";
}
Run Code Online (Sandbox Code Playgroud)

当调用 ( http://[..]/cgi-bin/p.cgi ) 时,出现以下错误:

Can't locate Template.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8 .) at /home/pistacchio/webapps/htdocs/cgi-bin/p.cgi line 8.
BEGIN failed--compilation aborted at /home/pistacchio/webapps/htdocs/cgi-bin/p.cgi line 8.
Run Code Online (Sandbox Code Playgroud)

我确保安装了模板,并且确实在从 shell 运行此程序时它可以工作(加载模板)并输出:

Content-Type: text/html; charset=ISO-8859-1

/home/pistacchio/lib/perl5
/home/pistacchio/lib/perl5/lib/i386-linux-thread-multi
/home/pistacchio/lib/perl5/lib
/home/pistacchio/lib/perl5/lib/i386-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.8
/usr/lib/perl5/site_perl
/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.8
/usr/lib/perl5/vendor_perl
/usr/lib/perl5/5.8.8/i386-linux-thread-multi
/usr/lib/perl5/5.8.8
Run Code Online (Sandbox Code Playgroud)

模板安装在 /home/pistacchio/lib/perl5/lib/i386-linux-thread-multi

[pistacchio@web118 i386-linux-thread-multi]$ pwd
/home/pistacchio/lib/perl5/lib/i386-linux-thread-multi
[pistacchio@web118 i386-linux-thread-multi]$ …
Run Code Online (Sandbox Code Playgroud)

perl cgi module

2
推荐指数
1
解决办法
2561
查看次数

Perl CGI 可靠地读取 url_param 和 param

我正在编写一个函数,该函数将列出传递给 CGI 脚本的所有参数,无论是通过 POST 发送的表单、URL 字符串,还是两者。

为此有两个功能:

param():尽管文档,我发现这个阅读无论是POST方法的参数从一种形式网址参数仅如果没有post数据。

另一方面,url_param()将永远读取通过 URL 字符串传入的参数,而不管 POST。


我的功能

sub post_and_url_param_keys{
  if(url_param){
    return [url_param, param];
  }else{
    return [param];
}
Run Code Online (Sandbox Code Playgroud)

如果传入,它可以列出所有参数:

? POST 和 URL 参数

? 仅 POST 参数

X URL 参数(每个键列出两次)

有没有办法巧妙地解决这个问题,而不必检查每个参数对的名称和值是否有重复?

url perl cgi param

2
推荐指数
1
解决办法
1390
查看次数

是否可以使用perl CGI.pm编写带内联css的HTML文件?

我被要求制作一个表格,通过使用CGI.pm和来自用户的表格获得宽度,单位,方向和段落.然后我需要通过CSS规则将宽度,单位和方向应用于段落.

我想知道是否可以使用Perl编写内联CSS CGI.pm.

例如:

<p style=width:"user-width user-unit";text-align:"user-justification">
 paragraph</p> 
Run Code Online (Sandbox Code Playgroud)

perl cgi perl-module

2
推荐指数
1
解决办法
3583
查看次数

我如何安装 php-cgi?我尝试了 MacPort、Package 和其他所有东西,但都不起作用

我正在尝试在我的 macbook(Yosemite 10.9.3)上安装 php-cgi,因为当我尝试在浏览器中打开内容时,PhpStorm IDE 不断向我回复“找不到 php-cgi”。我尝试使用较新版本的 php 解释器,因为当前版本是 5.4。但是我只能在 php.net 站点中找到这些包,但我不知道如何安装它。我也尝试下载自制软件,但又不知道如何从那里开始。我尝试使用 MacPort 通过使用以下行来安装 fastcgi:sudo port install php5 +fastcgi

但它返回这个:

--->  Dependencies to be installed: autoconf213 gawk gettext expat libiconv ncurses readline m4 perl5 perl5.16 gdbm bzip2 gsed libtool libxml2 xz zlib mhash pcre libedit pkgconfig

--->  Fetching archive for expat
--->  Attempting to fetch expat-2.1.0_0.darwin_13.x86_64.tbz2 from http://packages.macports.org/expat
--->  Attempting to fetch expat-2.1.0_0.darwin_13.x86_64.tbz2.rmd160 from http://packages.macports.org/expat
--->  Installing expat @2.1.0_0
--->  Activating expat @2.1.0_0
Error: org.macports.activate for port expat returned: Image …
Run Code Online (Sandbox Code Playgroud)

php cgi fastcgi macports phpstorm

2
推荐指数
1
解决办法
4876
查看次数

Python + LigHTTPd + CGI:如何配置为执行整个子路径的单个脚本

我正在编写一组打算在Web上使用的Python脚本。目前,我有一些使用的测试脚本可以正常工作import cgi

我基本上想要FastCGI / WSGI的行为。在这种情况下,我可以将特定URL下的所有请求传递给脚本。例如,假设用户访问URL http://www.example.com/script/run/1?param=true。对于/script我想要的给定脚本,例如/opt/mypython/webscript.py使用的任何请求import cgi,都可以运行并接收URL和GET参数。在这种情况下,我希望从脚本中能够看到包含一个参数/run/1和GET参数字典。

出于安全考虑,理想情况下,我们希望脚本位于文档根目录之外。

我还希望能够x-sendfile从脚本中使用标头。我知道FastCGI模块支持此功能,但不确定标准CGI是否支持。

我愿意迁移到FastCGI,但我不想重构任何代码。另外,我想在开发过程中使用标准的CGI,因为我调查的唯一FastCGI实现(波动)将导致脚本被缓存,因此在每次更改代码时都必须完全重新启动整个Web服务器。另外,flup要求您使用CGI接口进行一些不同的工作,这将意味着重写一些主要的代码。

flup确实提供了一些不错的便利;它的environ变量提供了一个PATH_INFO参数,用于指定如上所述的子路径。但是同样,标准的CGI模块并不能提供所有这些便利,因此flup需要重新编写代码,并且在开发过程中频繁更改代码的效率非常低。

因此,理想的解决方案是既使用标准CGI,又使用FastCGI来完成此任务,而无需重新编写代码。因此,在开发过程中,我可以使用标准的CGI及其伴随的性能下降(事实是python解释器必须每次启动),然后在代码准备好用于生产时轻松地将其迁移到基于FastCGI的后端,以便可以以最高性能运行。

我正在使用lighttpd的当前版本。如果可能的话,我需要做什么来配置lighttpd?

python cgi lighttpd

2
推荐指数
1
解决办法
1347
查看次数

apache服务器中的Python Cgi脚本

我想我犯了一些愚蠢的错误,但我找不到它。试图在 apache 网络服务器上运行一个简单的 python cgi 脚本。我的代码是

#/usr/bin/env python
import cgitb
import cgi
cgitb.enable()
print 'Content-Type: text/html'
print 
print '<html>'
print '<head><title>My first Python CGI app</title></head>'
print '  <body>'
print '    <p>something to try<p>'
print '  </body>'
print '</html>'
Run Code Online (Sandbox Code Playgroud)

这段代码在 /usr/lib/cgi-bin 我试图通过 localhost/cgi-bin/test.py 运行它,但它显示500 INTERNAL SERVER ERROR。我尝试更改其权限,但什么也没发生。我能够从 /var/www/html/file_name.html 运行 html 文件所以我尝试在 www/ 和 www/html/(两者中)移动它并制作 cgi-bin 文件夹,没有它,没有解决。

我在 apache2.conf 中添加了这个

    <Directory /usr/lib/cgi-bin>
    Options +ExecCGI
    AddHandler cgi-script .cgi .py
    Order allow,deny
    Allow from all
    </Directory>
Run Code Online (Sandbox Code Playgroud)

和 var/log/apache2/error.log 说
[Tue Jan 13 …

python apache cgi

2
推荐指数
1
解决办法
4476
查看次数

如何使用 cgi 包从 python 发送响应代码

我正在使用 cgi 包在 python 中编写脚本。我需要 根据我的代码中的一些检查发送HTTP/1.1 200 OK\nHTTP/1.1 404 Not Found\n的响应。如果我将上述行之一打印为响应的第一行,我的 apache 服务器会记录错误并返回 500 Internal server error 在这种情况下记录的错误消息的相关部分是来自脚本“helo.py”的格式错误的 标头:Bad标头:HTTP/1.1 200 OK\n 谁能指导我我在这里做错了什么。

html python apache cgi http

2
推荐指数
1
解决办法
3382
查看次数

如何决定是否使用Perl CGI与常规HTML输出

我发现在创建HTML页面时不再推荐使用CGI,但是我搜索关于CGI适当使用的答案的答案引起了比答案更多的混乱.

如果我的问题是基本的,我道歉,但我希望我的问题的答案将有助于澄清一些事情.

我被告知不要创建这样的表单:

sub output_form {
    my ($q) = @_;


    print $q->start_form(
        -name => 'main',
        -method => 'POST',
    );

    print $q->start_table;

    print $q->Tr(
      $q->td('Update#:'),
      $q->td(
        $q->textfield(-name => "update_num", -size => 02)
      )
    );

    print $q->Tr(
      $q->td('Date:'),
      $q->td(
        $q->textfield(-name => "date",-id => "datepicker")
      )
    );

    print $q->Tr(
      $q->td('Location:'),
      $q->td(
        $q->textfield(-name => "location", -size => 50)
      )
    );

    print $q->Tr(
      $q->td('Queue:'),
      $q->td(
        $q->textfield(-name => "queue", -size => 50)
      )
    );

    print $q->Tr(
      $q->td('ETO:'),
      $q->td(
        $q->textfield(-name => "eto", -size => 50) …
Run Code Online (Sandbox Code Playgroud)

perl cgi

2
推荐指数
1
解决办法
128
查看次数

无法生成子进程:C:/bugzilla/admin.cgi

我不知道问题出在哪里,在成功设置 Bugzilla 并登录后,当我单击管理之类的任何链接时,它返回此错误消息:

Server error!

The server encountered an internal error and was unable to complete your request.

Error message: 
couldn't create child process: 720002: admin.cgi

If you think this is a server error, please contact the webmaster.

Error 500

localhost
Apache/2.4.23 (Win32) OpenSSL/1.0.2h PHP/7.0.13
Run Code Online (Sandbox Code Playgroud)

我检查了 Apache 错误日志并得到了这个:

[Mon Feb 13 13:10:21.339205 2017] [ssl:warn] [pid 9152:tid 500] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name
[Mon Feb 13 13:10:21.448624 2017] [core:warn] [pid 9152:tid 500] …
Run Code Online (Sandbox Code Playgroud)

apache xampp perl bugzilla cgi

2
推荐指数
1
解决办法
9579
查看次数

ColdFusion / Shibboleth - REMOTE_USER

我的 IIS 服务器上托管了一个 ColdFusion 应用程序。我将Shibboleth服务添加到我的 Web IIS,并设置了 CGI/过滤器以使用它。我将我的应用程序添加到testshib联盟并且能够成功登录。现在我正在尝试将会话变量放入 ColdFusion 代码中。

当我转储 CGI 范围时,我看到 shibboleth 会话保存在 下HTTP_COOKIE,但它REMOTE_USER是一个空字符串。这是因为REMOTE_USER不能根据docs 使用。相反,请求标头变量应该命名为HTTP_REMOTE_USER,但我在 CGI 转储中没有看到。有没有人这是为什么?我是否必须设置我的 shibboleth 属性映射或在 ColdFusion 中?

索引.cfm

CGI dUMP
<cfdump var = "#cgi#" > 
<br>HTTP_REMOTE_USER
<cfdump var="#CGI.HTTP_REMOTE_USER#">
<br>Get Request
<cfset x = GetHttpRequestData()> 
<cfdump var="x">
Run Code Online (Sandbox Code Playgroud)

转储结果

HTTP_COOKIE:_shibsession_64656487474733a2f2f6465736f6d2f73686962626f6c657468=_ecb60f7e4bf7616ab3522; 
Run Code Online (Sandbox Code Playgroud)

会议

Miscellaneous
Session Expiration (barring inactivity): 479 minute(s)
Client Address: 224.61.30.228
SSO Protocol: urn:oasis:names:tc:SAML:2.0:protocol
Identity Provider: https://idp.testshib.org/idp/shibboleth
Authentication Time: 2017-11-30T14:48:48.255Z
Authentication Context …
Run Code Online (Sandbox Code Playgroud)

iis coldfusion cgi saml shibboleth

2
推荐指数
1
解决办法
805
查看次数

标签 统计

cgi ×10

perl ×5

apache ×3

python ×3

bugzilla ×1

coldfusion ×1

fastcgi ×1

html ×1

http ×1

iis ×1

lighttpd ×1

macports ×1

module ×1

param ×1

perl-module ×1

php ×1

phpstorm ×1

saml ×1

shibboleth ×1

url ×1

xampp ×1