我在我的主机上安装了几个Perl模块~/perl,如何将它们添加到Perl模块路径?设置PERL5LIB或unshift路径@INC确定可行,但环境变量在作为CGI脚本运行时没有帮助,并且@INC方式不是很便携.有没有更好的办法?这必须是一个常见的问题,我错过了什么?
我在编程语言(python)中不是那么新,但我不知道我将在哪里开始使用python制作机器人或刮刀?我应该学习cgi编程吗?或者刮刀是否仅使用python脚本运行?我应该为此构建服务器吗?对此没有任何线索......感谢您的帮助
假设我有一个基本的Python脚本,test.py:
#!/usr/bin/python
print "Content-type: text/html\n\n"
print "<html>Hello world!</html>"
Run Code Online (Sandbox Code Playgroud)
如何确定脚本是否在本地执行,例如:
python test.py
Run Code Online (Sandbox Code Playgroud)
或通过网络浏览器调用,例如访问:
http://example.com/test.py
Run Code Online (Sandbox Code Playgroud)
这似乎没有在cgi模块的文档中解决.我认为结果可能有所不同,cgi.FieldStorage()但似乎没有.
我能想到的唯一方法是:
#!/usr/bin/python
import os
print "Content-type: text/html\n\n"
print "<html>Hello world!</html>"
if 'REQUEST_METHOD' in os.environ :
print "This is a webpage"
else :
print "This is not a webpage"
Run Code Online (Sandbox Code Playgroud)
这是最好和/或最理想的方法吗?为什么/为什么不呢?
如果这个答案看起来与本网站的其他问题相似,我很抱歉,但我找不到我需要的东西.
我有这个代码:
$.ajax({
url: '../../cgi-bin/executeQuery',
type: 'GET',
data: ({siid:5185,of:"xmlWithColID"}),
dataType: 'xml',
success: function(xmlR){
try{
$.ajax({
url: '../../cgi-bin/authList.py',
type: 'GET',
data: ({xmlToFormat:xmlR,service:"paperList"}),
dataType: 'xml',
success: function(data){
try{
displayResult(data,loadXMLDoc("js/authList/paperTableStyle.xsl"),"divPaperTable");
}catch(e){
console.log(e.message);
}
},
complete: function(XMLHttpRequest, textStatus){
$('#divMakingAuthorList').addClass('secondary');
$('#divMakingAuthorList').hide();
}
});
}catch(e){
console.log(e.message);
}
}
});
Run Code Online (Sandbox Code Playgroud)
这给了我FF中的以下错误:"对WrappedNative原型对象的非法操作".
当我删除代码的"成功"部分时,错误消息仍然存在.之后,我删除了"完整"的parte,错误信息也在那里.但是,当我删除以下代码行时:data:({xmlToFormat:xmlR,service:"paperList"}),消息消失了.
但我不明白原因.是否可以将"xml"作为ajax事件中的数据发送到我的CGI?
谢谢
我想编写一个FastCGI应用程序,它应该使用线程处理多个同时请求.我看一下SDK附带的threaded.c示例:
#define THREAD_COUNT 20
static int counts[THREAD_COUNT];
static void *doit(void *a)
{
int rc, i, thread_id = (int)a;
pid_t pid = getpid();
FCGX_Request request;
char *server_name;
FCGX_InitRequest(&request, 0, 0);
for (;;)
{
static pthread_mutex_t accept_mutex = PTHREAD_MUTEX_INITIALIZER;
static pthread_mutex_t counts_mutex = PTHREAD_MUTEX_INITIALIZER;
/* Some platforms require accept() serialization, some don't.. */
pthread_mutex_lock(&accept_mutex);
rc = FCGX_Accept_r(&request);
pthread_mutex_unlock(&accept_mutex);
if (rc < 0)
break;
server_name = FCGX_GetParam("SERVER_NAME", request.envp);
FCGX_FPrintF(request.out,…
…
FCGX_Finish_r(&request);
}
return NULL;
}
int main(void)
{
int i;
pthread_t …Run Code Online (Sandbox Code Playgroud) 让我们从一些简单的东西开始:一个带有一个可以回显的字段的表单.
我正在尝试使用Apache服务器将python脚本作为cgi运行.我的脚本看起来像这样:
#!/usr/bin/python
import cgi
if __name__ == "__main__":
print("Content-type: text/html")
print("<HTML>")
print("<HEAD>")
Run Code Online (Sandbox Code Playgroud)
我在httpd.conf中完成了必要的配置(在我看来):
<Directory "/opt/lampp/htdocs/xampp/python">
Options +ExecCGI
AddHandler cgi-script .cgi .py
Order allow,deny
Allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)
我用chmod设置了脚本的执行权限
但是,当我尝试通过localhost访问脚本时,我得到一个错误500:在标题之前输出脚本结束:script.py可能是什么问题?该脚本是在类似Unix的环境中创建的,所以我认为clrf vs lf的问题不成立.非常感谢.
我是第一次尝试在我的共享主机上安装composer.
当我运行时,curl -sS https://getcomposer.org/installer | php
我正在成功安装Composer
用户:php composer.phar
当我跑步时,我php composer.phar得到这个交战错误:
警告:应该通过PHP的CLI版本调用Composer,而不是cgi-fcgi SAPI
有想法该怎么解决这个吗 ?为什么我收到这个错误?:(
当我跑步时,php -v我得到了回来
PHP 5.4.39 (cgi-fcgi) (built: Mar 25 2015 14:20:20)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
with Zend Guard Loader v3.3, Copyright (c) 1998-2013, by Zend Technologies
Run Code Online (Sandbox Code Playgroud)
我是否需要使用CLI版本运行此操作,如果是这样,我该怎么做?
任何帮助都会很好,谢谢.
我正在尝试从Udacity的Full Stack Foundations课程中进行练习.我do_POST在我的子类中有方法BaseHTTPRequestHandler,基本上我想获得一个名为messagesubmit with multipart form 的post值,这是方法的代码:
def do_POST(self):
try:
if self.path.endswith("/Hello"):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers
ctype, pdict = cgi.parse_header(self.headers['content-type'])
if ctype == 'multipart/form-data':
fields = cgi.parse_multipart(self.rfile, pdict)
messagecontent = fields.get('message')
output = ""
output += "<html><body>"
output += "<h2>Ok, how about this?</h2>"
output += "<h1>{}</h1>".format(messagecontent)
output += "<form method='POST' enctype='multipart/form-data' action='/Hello'>"
output += "<h2>What would you like to say?</h2>"
output += "<input name='message' type='text'/><br/><input type='submit' value='Submit'/>"
output += "</form></body></html>"
self.wfile.write(output.encode('utf-8'))
print(output)
return
except: …Run Code Online (Sandbox Code Playgroud) 我最近使用Wix工具集开发了一个Web应用程序的安装程序(是的,带有安装程序的Web应用程序).
该向导将指导用户获取站点安装所需的所有基本信息,如下所示:
在安装结束时使用自定义操作,我使用文档动态配置IIS处理CGI ,将FastCGI配置为托管PHP,Python,应用程序.有很多步骤和开发来实现这个结果,但问题在于:
我安装了应用程序,一切正常,但是,如果我卸载或安装另一个实例或其他WebApplication,IIS配置的处理程序就像全局一样,并始终指向第一个安装.(卸载应用程序时出现问题)位于C:\ Windows\System32\inetsrv\config中的applicationHost.config是IIS的配置,其"config"类似于global.
<handlers accessPolicy="Read, Script">
<add name="PHP-FastCGI" path="*.php" verb="*" modules="FastCgiModule" scriptProcessor="E:\CIM_dev\bin\php-v5.6\php-cgi.exe" resourceType="Either" />
<add name="CGI-exe_2" path="*.exe" verb="*" modules="CgiModule" resourceType="File" requireAccess="Execute" allowPathInfo="true" />
<add name="TRACEVerbHandler2" path="*" verb="TRACE" modules="ProtocolSupportModule" requireAccess="None" />
<add name="OPTIONSVerbHandler2" path="*" verb="OPTIONS" modules="ProtocolSupportModule" requireAccess="None" />
<add name="StaticFile2" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" />
</handlers>
Run Code Online (Sandbox Code Playgroud)
我的问题是,有没有办法为web.config中的每个网站进行此配置?我一直在努力尝试所有的东西而没有成功.