[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Debian 3.0r1 Apache 1.3.26 cgi-bin behavior depends on script name and browser (?)



debian-user@lists.debian.org:

I am getting ready to study "MySQL and Perl for the Web" [Paul DuBois,
2002] and I have come across some baffling behavior with CGI scripts on
Apache 1.3.26 on Debian 3.0r1 -- sometimes Apache executes the scripts
as expected, other times it tries to download them or generates an
error.  The behavior seems to depend on the script name, not the
content.  The gory details follow.


Following the directions on:

http://httpd.apache.org/docs/howto/cgi.html#cgioutsideofscriptaliasdirectories


I have added the following lines to the main Apache configuration file:

    root@d3020g:~/d3020g/etc/apache:CVS> cvs -q diff httpd.conf
    Index: httpd.conf
    ===================================================================
    RCS file: /cvs/dpchrist/d3020g/etc/apache/httpd.conf,v
    retrieving revision 1.1
    diff -r1.1 httpd.conf
    378a379,382
    > <Directory /home/dpchrist/public_html/cgi-bin>
    >     Options ExecCGI
    > </Directory>
    >
    780a785
    >     AddHandler cgi-script pl


I loaded the configuration:

    root@d3020g:~/d3020g/etc/apache:CVS> cp httpd.conf /etc/apache/.
    cp: overwrite `/etc/apache/./httpd.conf'? y

    root@d3020g:~/d3020g/etc/apache:CVS> apachectl configtest
    [Mon Sep 29 22:57:33 2003] [warn] module config_log_module is
already loaded, skipping
    [Mon Sep 29 22:57:33 2003] [warn] module mime_module is already
loaded, skipping

    [Mon Sep 29 22:57:33 2003] [alert] apache: Could not determine the
server's fully qualified domain name, using 192.168.254.2 for ServerName
    Syntax OK

    root@d3020g:~/d3020g/etc/apache:CVS> apachectl graceful
    /usr/sbin/apachectl graceful: httpd gracefully restarted


I then put Perl CGI scripts into /home/dpchrist/public_html/cgi-bin and
attempted to access them via the URL
http://192.168.254.2/~dpchrist/cgi-bin/*.  Some scripts are executed
while others do various naughty
things.  Here are some scripts that execute as expected in Mozilla 1.4
and Internet Explorer 6.0.2800.1106:

1.  dpchrist@d3020g:~/public_html/cgi-bin:CVS> cat foo.pl
    #! /usr/bin/perl
    print "Content-type: text/html\r\n\r\n";
    print "Hello, World.";

2.  dpchrist@d3020g:~/public_html/cgi-bin:CVS> cat intro4.pl
    #!/usr/bin/perl -w
    use strict;

    use CGI;
    my $cgi = new CGI;

    print $cgi->header(),
        $cgi->start_html("My Page Title"),
        $cgi->p("My page body"),
        $cgi->end_html(),
        "\n";

    exit(0);

3.  dpchrist@d3020g:~/public_html/cgi-bin:CVS> cat intro5.pl
    #!/usr/bin/perl -w
    use strict;

    use CGI qw( :standard );

    print header(),
        start_html("My Page Titel"),
        p("My page body"),
        end_html(),
        "\n";

    exit(0);

And here is one that Mozilla attempts to download, while IE says "The
page cannot be found":

    dpchrist@d3020g:~/public_html/cgi-bin:CVS> cat intro3.pl
    #!/usr/bin/perl -w
    use strict;

    print "Content-Type: text/html\n\n";

    print <<END;
    <html>
    <head><title>My Page Title</title></head>
    <body><p>My page body</p></body>
    </html>
    END
    exit(0);


The really weird part is that if I rename a "bad" script to a "good"
name, it then executes!

    dpchrist@d3020g:~/public_html/cgi-bin:CVS> mv intro3.pl bar.pl


Here are the Apache logs:

    root@d3020g:/var/log/apache# tail -n 4 access.log
    192.168.1.10 - - [29/Sep/2003:23:01:55 -0700] "GET
/~dpchrist/cgi-bin/foo.pl HTTP/1.1" 200 25 "-" "Mozilla/5.0 (Windows; U;
Windows NT 5.0; en-US; rv:1.4) Gecko/20030624"
    192.168.1.10 - - [29/Sep/2003:23:02:07 -0700] "GET
/~dpchrist/cgi-bin/intro4.pl HTTP/1.1" 200 301 "-" "Mozilla/5.0
(Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624"
    192.168.1.10 - - [29/Sep/2003:23:02:15 -0700] "GET
/~dpchrist/cgi-bin/intro5.pl HTTP/1.1" 200 301 "-" "Mozilla/5.0
(Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624"
    192.168.1.10 - - [29/Sep/2003:23:02:38 -0700] "GET
/~dpchrist/cgi-bin/bar.pl HTTP/1.1" 200 102 "-" "Mozilla/5.0 (Windows;
U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624"

    root@d3020g:/var/log/apache# tail -n 8 error.log
    [Mon Sep 29 22:57:58 2003] [notice] SIGUSR1 received.  Doing
graceful restart
    [Mon Sep 29 22:57:58 2003] [warn] module config_log_module is
already loaded, skipping
    [Mon Sep 29 22:57:58 2003] [warn] module mime_module is already
loaded, skipping

    [Mon Sep 29 22:57:58 2003] [alert] apache: Could not determine the
server's fully qualified domain name, using 192.168.254.2 for ServerName
    [Mon Sep 29 22:57:59 2003] [error] (2)No such file or directory:
mod_mime_magic: can't read magic file /etc/apache/share/magic
    [Mon Sep 29 22:57:59 2003] [notice] Apache/1.3.26 (Unix) Debian
GNU/Linux configured -- resuming normal operations
    [Mon Sep 29 22:57:59 2003] [notice] suEXEC mechanism enabled
(wrapper: /usr/lib/apache/suexec)
    [Mon Sep 29 22:57:59 2003] [notice] Accept mutex: sysvsem (Default:
sysvsem)

    root@d3020g:/var/log/apache# tail -n 4 suexec.log
    [2003-09-29 23:01:55]: info: (target/actual) uid:
(dpchrist/dpchrist) gid: (dpchrist/dpchrist) cmd: foo.pl
    [2003-09-29 23:02:06]: info: (target/actual) uid:
(dpchrist/dpchrist) gid: (dpchrist/dpchrist) cmd: intro4.pl
    [2003-09-29 23:02:15]: info: (target/actual) uid:
(dpchrist/dpchrist) gid: (dpchrist/dpchrist) cmd: intro5.pl
    [2003-09-29 23:02:38]: info: (target/actual) uid:
(dpchrist/dpchrist) gid: (dpchrist/dpchrist) cmd: bar.pl


Here is the script directory:

    dpchrist@d3020g:~/public_html/cgi-bin:CVS> ls -al
    total 36
    drwxr-xr-x    3 dpchrist dpchrist     4096 Sep 29 23:04 .
    drwxr-xr-x    4 dpchrist dpchrist     4096 Sep 28 21:41 ..
    drwxr-xr-x    2 dpchrist dpchrist     4096 Sep 29 23:04 CVS
    -rwxr-xr-x    1 dpchrist dpchrist      186 Sep 29 22:42 bar.pl
    -rwxr-xr-x    1 dpchrist dpchrist       81 Sep 29 17:46 foo.pl
    -rwxr-xr-x    1 dpchrist dpchrist      186 Sep 29 23:04 intro3.pl
    -rwxr-xr-x    1 dpchrist dpchrist      193 Sep 29 22:42 intro4.pl
    -rwxr-xr-x    1 dpchrist dpchrist      166 Sep 29 22:42 intro5.pl
    -rwxr-xr-x    1 dpchrist dpchrist      747 Sep 29 22:42 intro7.pl


Any ideas?


TIA,

David




Reply to: