【问题标题】:Simple CGI/Perl Script not displaying background image简单的 CGI/Perl 脚本不显示背景图像
【发布时间】:2012-12-15 03:26:36
【问题描述】:
#!/usr/local/bin/perl
use warnings;
use strict;

use CGI qw(:standard);
print header;
print start_html(-title=>"Hello World", 
-bgcolor=>"#cccccc", -text=>"#999999",
-background=>"healo.jpg");

显示颜色,但不显示图像。 我有 healo.jpg 位于 bin 文件夹和我的主文件夹中。 我从http://www.cgi101.com/book/ch1/text.html获取了这段代码 请帮忙。

【问题讨论】:

  • 图片和你的perl脚本在同一个目录吗?
  • 是的,它在同一个目录中。我只是尝试直接访问它,但它给了我一个 404 not found 错误。我不明白。 K 这是测试页面:csvlife.com/cgi-bin/frt.cgi

标签: perl cgi


【解决方案1】:

如果您的 CGI 脚本在标准 cgi-bin 中,则文件 healo.jpg 不能存储在那里,因为它不是 CGI 脚本。试着把它放在别的地方。

例如,您可以将图像文件放在您的 wwwroot 中,这样您就可以在 http://csvlife.com/healo.jpg 找到它(那里已经有东西了),然后将那部分代码更改为 -background=>"/healo.jpg"

【讨论】:

  • 好的。如果我这样做,我是否会在以下代码中列出图像路径: -background=>"healo.jpg" 部分代码?
  • 是的。例如,您可以将图像文件放在您的 wwwroot 中,这样您就可以在csvlife.com/healo.jpg 找到它(那里已经有东西了),然后将那部分代码更改为-background=>"/healo.jpg"
  • @nandhp 您可能希望编辑您的答案以包含您的评论,以便搜索并找到此帖子的其他人看到实际答案(相对与绝对路径问题) - 特别是因为这是公认的回答。
【解决方案2】:

检查您生成的 HTML。这将生成表单的背景属性:

background = 'healo.jpg'

这意味着 healo.jpg 需要与您当前所在的目录位于同一目录中,这可能与您的主文件夹不同。

您要么需要将图像复制到 webroot(您可能无法这样做),要么将参数更改为 start_html 为绝对路径,例如background ='/healo.jpg'

【讨论】:

  • /public_html/healo.jpg 是我现在拥有的路径,当我转到 csvlife.com/healo.jpg 时它会显示出来,但其他页面仍然没有显示它......也谢谢你帮我解决这个问题。
  • 脚本节目的生成源是什么?换句话说,当您在浏览器中加载 cgi 时,查看 src.身体标签是什么样的?
  • Perl 不关心文件healo.jpg 的存在,它只输出background 属性。由于文件healo.jpg是地方“/healo.jpg”,它应该是-background=>"/healo.jpg"-background=>"../healo.jpg"
  • @DieVers 更新了我的答案以澄清。基本上这是一个绝对v.相对路径问题。您需要使用绝对路径。
  • @DieVers 顺便说一句,CGI 库有点过时了。例如,对于 HTML 4,<body> 标记的 background 属性已被弃用。您可能希望查看一些更新/更新的技术。
猜你喜欢
  • 1970-01-01
  • 2012-02-15
  • 2010-12-19
  • 2012-10-16
  • 2012-12-11
  • 2016-08-19
  • 2016-06-11
  • 2015-12-10
  • 2019-02-27
相关资源
最近更新 更多