我试图从现有的Windows 2003服务器(IIS 6.0)中迁移旧的CGI应用程序,它工作得很好到IIS 7.0的新的Windows 2008服务器,我们得到以下问题: 设置模块处理程序和所有东西后,我发现我只能访问CGI应用程序(rdbweb.exe)文件,如果我通过POST请求(表单提交从另一个页面)调用它。 如果我只是尝试input文件的URL(发出GET请求),我得到以下错误: HTTP错误502.2 – 错误的网关 指定的CGI应用程序由于没有返回一组完整的HTTP头而被误操作。 它返回的标题是“模块rdbweb.exe在00039B44.I / O错误6”中的exceptionEInOutError。 这是我们的客户之一的一个非常古老的应用程序。 当我们试图打电话给供应商时,他们说我们需要支付约3000美元的年度支持费才能开始谈论它。 当然,我试图避免这一点! 注意: 如果我们创build一个提交给“rdbweb.exe”的普通HTML表单,我们就可以使CGI正常工作。 我们不能使用这个作为解决方法,因为应用程序中的一些页面链接到“rdbweb.exe”与普通链接不forms提交。 如果我们运行“rdbweb.exe”。 从控制台(命令提示符)窗口而不是IIS,我们得到正常的HTML,我们通常会期望,没有问题。 我们已经尝试了以下内容: 确保在IIS中映射到“rdbweb.exe”的CGI模块具有启用的所有权限(读,写,执行),并且所有动词都不仅允许特定的动词,还尝试允许GET,明确地POST。 确保应用程序布尔具有“启用32位应用程序”设置为true。 确保网站运行一个帐户,具有“rdbweb.exe”。文件和整个网站(尽pipe我们知道它“读”,“执行”应该是足够的)的完整权限。 确保“ISAPI和CGI限制”的机器范围IIS设置具有“rdbweb.exe”.allowed的完整path。 将模块从CGI更改为快速CGI,也无法正常工作 确保我们有最新的Windows更新(对于IIS6,我们发现知识库文章指出需要IIS6热修复的错误,但IIS7没有发现类似的错误)。 现在唯一剩下的可能性就是下面的Microsoft知识库文章: http : //support.microsoft.com/kb/145661 – 这是关于: CGI错误:指定的CGI应用程序由于没有返回一组完整的HTTP头而被误操作。 它返回的标题是: 文章提出了以下解决scheme: 修改CGI应用程序头输出的源代码。 以下是一个正确的标题的例子: print "HTTP/1.0 200 OK\n"; print "Content-Type: text/html\n\n\n"; 不幸的是,我们没有来源尝试这个, 我不知道这是否是我们正在处理的问题 。 你能帮我解决这个问题吗? 有没有办法让应用程序工作,而无需POST请求? 请注意,在旧的IIS6服务器上应用程序工作得很好,我找不到任何特殊的IISconfiguration,我可能想在IIS7上尝试其相当的。
在许多语言中,您可以从头开始构buildWeb框架(即从unix套接字)和抽象层。 如果我想在OCaml或C中从零开始构buildWeb框架,我首先构build一个侦听端口80的套接字服务器。 就像我之前想到的那样,PHP和其他更高级的语言一样可能会以某种方式包装unix套接字。 现在我知道这是从来没有如何devisePHP的情况。 不过,我不明白为什么从来没有这样用过。 沿着同样的路线,PHP解释器不会像Python解释器那样以这种方式使用。 例如,当我从零开始构build一个Python Web服务器并进行部署时,我执行以下操作:在某个端口(例如8000)上连接一个unix套接字,守护程序如python server.py 8000 ,并在端口上有nginx反向代理80并转发到我的内部本地服务器端口8000.我从来没有看到这在PHP中完成,即使这是可能的。 我会承认,除了使用解释器独立(即龙卷风,uwsgi等)之外,您还有其他Python选项。 但是,这是两种方式。 我的问题是,PHP语言,解释器或社区的哪些方面阻止了PHP web框架从unix套接字调用完全build立起来,在本地端口上守护进程,并被反向代理而不是使用cgi / fastcgi包装?
我是一名Web开发人员,我已经要求我们的系统pipe理员为我的团队设置一个服务器,作为开发环境使用。 PHP正在作为CGI运行。 当我尝试打开http:// myaddress /我收到403禁止 。 当我尝试打开http://myaddress/index.php一切都很好。 如何设置服务器默认查找index.php文件? PS系统pipe理员目前不在这里,所以他不能为我做。
一个bsic web服务器如python SimpleHTTPServer或THTTPD以最less的进程读取静态文件; 因此速度相当快。 通常情况下,添加更多的function来创build一个先进的Web服务器(但仍然是轻量级的,如nginx )将放慢这个过程。 先进的networking服务器可以发挥一个窍门,使这个过程更快? 或者比最简单的简单是不可能的,而最简单的方法是读取静态文件的最快方法? 我的意思是可以nginx (或其他轻量级networking服务器声称是快)比THTTPD (或其他基本的Web服务器与最小的进程)? 那么CGI脚本怎么样呢,因为HTTPD和python CGIHTTPServer可以简单地执行cgi脚本。
那么我们有一个内部的服务器pipe理器(比如Webmin,更具体),包括一堆C CGI程序和CGI Perl脚本,其中一些需要root权限(添加系统用户,pipe理密码,处理邮件队列等)。 )被执行。 目前,Apache作为反向代理服务器,将请求传递给在本地主机上侦听的另一个Web服务器(Xitami),以root用户身份运行。 所以我的问题是,而不是运行一个Web服务器作为根(即使它在127.0.0.1),是否有什么不同的做一个特定的CGI目录/程序/脚本,绝对需要root权限执行setuid根? 还是都同样不安全? 在这种情况下,最好的解决scheme/实践是什么?
像很多次一样,我使用虚拟机来testing一些东西。 这就是configuration可能有点脏的原因。 我只是试着让cgit和nginx一起运行。 我创build了一个包含git仓库的/git (owner: www-data:www-data )目录。 我的cgitconfiguration( /etc/cgitrc )是: virtual-root=/htdocs/cgit/ css=/htdocs/cgit/cgit.css logo=/htdocs/cgit/cgit.png scan-path=/git 我在/etc/nginx/sites-available/default的默认服务器上添加了以下部分: location ~* ^.+\.(css|png|ico)$ { expires 30d; } location /htdocs/cgit/ { index cgit.cgi include fastcgi_params; fastcgi_param SCRIPT_FILENAME /var/www/htdocs/cgit/cgit.cgi; fastcgi_pass unix:/var/run/fcgiwrap.socket; fastcgi_param PATH_INFO $uri; fastcgi_param QUERY_STRING $args; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_NAME $fastcgi_script_name; […]
我在GitHub上有一个“推后”webhook,它调用一个CGI脚本来更新一个Jekyll网站。 剧本: user@server [~/_repo]# cat cgi-bin/githook.cgi #!/bin/bash echo Content-type: text/plain echo if [ -z "$HOME" ] ; then HOME=/home/user fi GIT_REPO=$HOME/_repo PUBLIC_WWW=$HOME/public_html pushd $GIT_REPO git pull echo "$HOME/.rvm/bin/ts_jekyll build –source $GIT_REPO –destination $PUBLIC_WWW" $HOME/.rvm/bin/ts_jekyll build –source $GIT_REPO –destination $PUBLIC_WWW popd echo DONE GitHub将脚本的输出保存为: ~/_repo ~/public_html/cgi-bin Updating OLD_COMMIT_SHA..NEW_COMMIT_SHA /home/user/.rvm/bin/ts_jekyll build –source /home/user/_repo/ –destination /home/user/public_html Configuration file: […]
我在ubuntu(使用nginx)上使用php-cgi,并且启动它的命令是: spawn -fcgi -a 127.0.0.1 -p 9100 -f / usr / bin / php-cgi -P /var/run/fastcgi-php.pid 但有时php-cgi进程会自动退出,我需要手动启动它。 有什么办法可以使其自动重启,例如)编写init脚本? 请build议,谢谢。
我有一个在CentOS上设置的服务器,我需要将API从CGI更改为FCGI(其他人最初设置)以使x-cache正常工作(我们需要这样做,因为我们周一有电视机出现,加载)。 该服务器是专用的戴尔R210,采用英特尔至强L3426(8M高速caching1.86GHz)和2GB内存 – 但是它支持244个并发客户端(通过loadimpact.com)。 计划是安装nginx作为apache的反向代理,并configurationapache监听端口81 localhost,并将nginx转发请求转发给apache。 目前什么是杀死我们的处理器是php渲染,因为我们运行的是Joomla 1.5,所以我想运行x-cache作为RAM的操作码。 但是x-cache不能和CGI一起工作 – 只有FCGI才能解决这个问题,为什么需要这样做? 这是一个安全的Joomla网站的变化? 这怎么可以通过CLI来完成 – 我们有cPanel,但我讨厌它。
在configuration现有的Web应用程序时,在决定是使用Apache的mod_perl还是mod_cgi时应考虑哪些因素?