我正在尝试在cgi-bin中设置一个python脚本,它只返回一个带有content-type:image/png的头文件并返回图像.我试过打开图像并将其返回,print f.read()但这不起作用.
编辑:我正在尝试使用的代码是:
print "Content-type: image/png\n\n"
with open("/home/user/tmp/image.png", "r") as f:
print f.read()
Run Code Online (Sandbox Code Playgroud)
这是在ubuntu服务器10.04上使用apache.当我在chrome中加载页面时,我得到了破碎的图像图像,当我在firefox中加载页面时,我得到了The image http://localhost/cgi-bin/test.py" cannot be displayed, because it contains errors.
我已经下载了草莓PERL并在Winxp sp3上用CGI Perl Apache编写了一个应用程序.我使用的其中一个库(由其他人编写)使用XML :: LibXML.当我加载页面时,它给出了内部服务器错误.从Apache错误日志中我可以看到此错误:
无法为模块XML :: LibXML加载'C:/strawberry/perl/site/lib/auto/XML/LibXML/LibXML.dll':load_file:指定的模块无法可以在C:/strawberry/perl/lib/DynaLoader.pm第190行找到
.C:/strawberry/perl/site/lib/auto/XML/LibXML/LibXML.dll存在所有权限.此库也适用于Linux.如果我删除所有需要LibXML的代码,我的应用程序也可以正常工作.
任何人都可以告诉我何时可以在这里发布问题.
我已经设置了一个php文件来运行,只有echos你好.
<?php
echo hello;
?>
Run Code Online (Sandbox Code Playgroud)
我的cron工作看起来像这样:
/usr/local/bin/php -f “/home/username/public_html/mls/test.php”
Run Code Online (Sandbox Code Playgroud)
当我的脚本运行时,我收到一封确认电子邮件说:
Could not open input file: /home/username/public_html/mls/test.php
Run Code Online (Sandbox Code Playgroud)
我不知道造成这种情况的原因.我正在使用godaddy的虚拟专用服务器,安装了cpanel x.我已经使用ssh在文件夹和文件上设置权限777,仍然无法让它运行.
任何意见将是有益的.谢谢.
我用 C++ 构建了一个 .CGI。此二进制文件依赖于boost特定文件夹中的某些共享库和其他资源/usr/local/boost/。CGI 不执行,在日志中我可以看到错误
error while loading shared libraries: libdxxx: cannot
open shared object file: No such file or dire
Run Code Online (Sandbox Code Playgroud)
现在,我读了很多日志,说我必须在httpd.conf下面进行设置,但仍然不起作用。
SetEnv LD_LIBRARY_PATH /usr/local/boost:
Run Code Online (Sandbox Code Playgroud)
在我的配置中,我在配置文件的末尾“按原样”设置了这一行,而没有包含在任何VirtualHOst or Directory部分中。我试图插入到 cgi-bin 的目录中,但还是一样
<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
SetEnv LD_LIBRARY_PATH /usr/local/boost
</Directory>
Run Code Online (Sandbox Code Playgroud)
我也试过(见下面的讨论)为 ldconfig 添加一个 .conf 文件,但它仍然不起作用!
#added a file called myconfig.conf conrtaining a line
/usr/local/boost
/etc/ld.conf.d/
ldconfig (as root)
Run Code Online (Sandbox Code Playgroud)
我还阅读了httpd继承运行它的 ROOT 用户的环境变量;当我 root 时,我调用以下命令来启动 Apache 并且 …
我正在开发一个python版本的cgi脚本,需要在cgi-bin文件夹中创建img文件(将在网页上显示).
但它失败了:[星期三10月28日16:13:51 2009] [错误] [客户端:: 1] OSError:[Errno 13]权限被拒绝:'平均/'
[注意]'average /'是cgi脚本首先要创建的用于保存这些img文件的文件夹.
我尝试给cgi脚本一个+ x权限,但它仍然失败了.这在Win和Mac上都会发生.
顺便说一句,我正在使用默认的Apache配置.安装Apache后我没有改变任何东西.
以前我在为python安装apache2时遇到错误,这是链接
我以为我应该继续那里,但是现在我得到一个新的错误,所以把它作为一个新的发布,这就是问题所在
我已经放置了一个包含代码的文件hello.py
#!/usr/bin/python
print "Content-type:text/html\r\n\r\n"
print '<html>'
print '<head>'
print '<title>Hello Word - First CGI Program</title>'
print '</head>'
print '<body>'
print '<h2>Hello Word! This is my first CGI program</h2>'
print '</body>'
print '</html>'
Run Code Online (Sandbox Code Playgroud)
/var/www/cgi-bin我在apache2上使用时在一个文件夹中
我收到了这个错误
The requested URL /cgi-bin/hello.py was not found on this server. Apache/2.2.14(Ubuntu)Server at localhost Port 80
Run Code Online (Sandbox Code Playgroud)
这是我在sites-available文件夹的默认页面中找到的代码:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from …Run Code Online (Sandbox Code Playgroud) 我最近学习了cgi,并在vbox中设置了一个Ubuntu服务器.我写的第一个程序是使用vim通过ssh在Python中编写的.然后我在我的Windows 7工作站上安装了Eclipse并创建了完全相同的Perl文件; 只是一个简单的问候世界.
我试过运行它,我得到了500,而同一个目录(/ usr/lib/cgi-bin)中的Python代码显示正常.沮丧,我检查并三重检查权限,它开始于#!/ usr/bin/perl.我还检查了AddHandler是否设置为.pl.一切都设置得很好,一时兴起,我决定使用vim在服务器中编写完全相同的代码,就像我在Python文件中所做的那样.
瞧,它有效.我比较了他们,以为我疯了,他们完全一样.那么,这笔交易是什么?为什么Eclipse中的Windows 7中的文件与使用vim的Ubuntu服务器中生成的文件不同?他们有不同的二进制标题或什么?这确实会影响我的开发环境.
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Testing.";
Run Code Online (Sandbox Code Playgroud)
Apache错误日志:
[Tue Aug 07 12:32:02 2012] [error] [client 192.168.1.8] (2)No such file or directory: exec of '/usr/lib/cgi-bin/test.pl' failed
[Tue Aug 07 12:32:02 2012] [error] [client 192.168.1.8] Premature end of script headers: test.pl
[Tue Aug 07 12:32:02 2012] [error] [client 192.168.1.8] File does not exist: /var/www/favicon.ico
Run Code Online (Sandbox Code Playgroud)
这是我得到的持续错误.
我一直在编写本地运行的python脚本.我现在想使用其中一个python脚本在线提供服务,通过webhosting,我可以在cgi-bin中运行python.
python脚本从用户填写的html表单中获取输入,具有凭据并与本地数据库连接,使用python库计算内容并将结果发送为要显示的HTML.
我想知道的是我应采取的安全措施.这是我的担忧:
我有一个CGI脚本(编译的C程序),它输出其命令行参数(argv [0],argv [1]等).
如果我尝试http://ajf.me/c/?abc,我会将"abc"作为第二个参数.
但是,如果我尝试http://ajf.me/c/?a=bc我没有得到任何第二个参数.
为什么使用=停止参数传递给程序?
如果重要的是C代码:
#include <stdio.h>
int main (int argc, char *argv[]) {
int i;
printf("Content-Type: text/html;charset=utf-8\n\n");
printf("<!DOCTYPE html>\n");
printf("<html>\n");
printf("<head>\n");
printf("<title>ajf.me powered by ANSI C!</title>\n");
printf("</head>\n");
printf("<body>\n");
printf("<h2>Supplied Arguments</h2>\n");
printf("argc: %d\n", argc);
printf("<ol>\n");
for (i = 0; i < argc; ++i) {
printf("<li>%s</li>\n", argv[i]);
}
printf("</ol>\n");
printf("<em>Yes, this is vulnerable to null-byte injection. For instance, <a href=\"?Injected%%00Null\" style=\"font-family: monospace; color: green;\">?Injected\\0Null</a>.</em>\n");
printf("</body>\n");
printf("</html>\n");
}
Run Code Online (Sandbox Code Playgroud) 如何删除临时文件夹中只有.jpg扩展名的文件.
这是我试过的;
unlink("../httpdocs/Temp/*.jpg);
Run Code Online (Sandbox Code Playgroud) cgi-bin ×10
cgi ×4
apache ×3
apache2 ×3
perl ×3
python ×2
c ×1
crontab ×1
image ×1
mod-python ×1
perl-module ×1
security ×1
ssh ×1
xml-libxml ×1