CGI scripts don't work. Help me please!

Discussion in 'Installation/Configuration' started by a4411, Jul 23, 2008.

  1. a4411

    a4411 New Member

    I use CentOs 5.2, installed like "perfect server how-to". Yesterday I decided to use cgi script and found that they wan't run.

    In terminal i run simple script "hello world"
    ./perl.pl
    and it shows me "hello"

    But when I try to run it from web browser, I receive 500 error.
    In logfile is message "Premature end of script Headers".

    I make that perl.pl by VI in terminal, did't upload or copy it.

    Please, help me.
     
  2. topdog

    topdog Active Member

    Am guessing that your script is not sending the corrent content type headers.
     
  3. a4411

    a4411 New Member

    Here is script:

    Code:
    #!/usr/bin/perl
    print "Content-type: text/html\n\n";
    
    print <<END_HTML;
    <html>
    <head></head>
    <body>Hello, World!</body>
    </html>
    END_HTML
    
     
  4. topdog

    topdog Active Member

    okay i thought u were not printing the content header, take a look at your httpd and audit logs, i suspect selinux could be blocking the action.
     
  5. a4411

    a4411 New Member

    Here is httpd.cong:

    Code:
    
    ServerTokens Major
    
    /mod/mpm_common.html#lockfile>);
    
    ServerRoot "/etc/httpd"
    
    
    TraceEnable off
    
    
    PidFile run/httpd.pid
    
    TimeOut 120
    
    KeepAlive on
    
    MaxKeepAliveRequests 2500
    
    KeepAliveTimeout 15
    
    
    <IfModule prefork.c>
    StartServers       10
    MinSpareServers    20
    MaxSpareServers   30
    ServerLimit      512
    MaxClients       512
    MaxRequestsPerChild  2500
    </IfModule>
    
    
    Listen *:80
    
    LoadModule auth_basic_module modules/mod_auth_basic.so
    LoadModule auth_digest_module modules/mod_auth_digest.so
    LoadModule authn_file_module modules/mod_authn_file.so
    LoadModule authn_alias_module modules/mod_authn_alias.so
    LoadModule authn_anon_module modules/mod_authn_anon.so
    LoadModule authn_dbm_module modules/mod_authn_dbm.so
    LoadModule authn_default_module modules/mod_authn_default.so
    LoadModule authz_host_module modules/mod_authz_host.so
    LoadModule authz_user_module modules/mod_authz_user.so
    LoadModule authz_owner_module modules/mod_authz_owner.so
    LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
    LoadModule authz_dbm_module modules/mod_authz_dbm.so
    LoadModule authz_default_module modules/mod_authz_default.so
    LoadModule ldap_module modules/mod_ldap.so
    LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
    LoadModule include_module modules/mod_include.so
    LoadModule log_config_module modules/mod_log_config.so
    LoadModule logio_module modules/mod_logio.so
    LoadModule env_module modules/mod_env.so
    LoadModule ext_filter_module modules/mod_ext_filter.so
    LoadModule mime_magic_module modules/mod_mime_magic.so
    LoadModule expires_module modules/mod_expires.so
    LoadModule deflate_module modules/mod_deflate.so
    LoadModule headers_module modules/mod_headers.so
    LoadModule usertrack_module modules/mod_usertrack.so
    LoadModule setenvif_module modules/mod_setenvif.so
    LoadModule mime_module modules/mod_mime.so
    LoadModule dav_module modules/mod_dav.so
    LoadModule status_module modules/mod_status.so
    LoadModule autoindex_module modules/mod_autoindex.so
    LoadModule info_module modules/mod_info.so
    LoadModule dav_fs_module modules/mod_dav_fs.so
    LoadModule vhost_alias_module modules/mod_vhost_alias.so
    LoadModule negotiation_module modules/mod_negotiation.so
    LoadModule dir_module modules/mod_dir.so
    LoadModule actions_module modules/mod_actions.so
    LoadModule speling_module modules/mod_speling.so
    LoadModule userdir_module modules/mod_userdir.so
    LoadModule alias_module modules/mod_alias.so
    LoadModule rewrite_module modules/mod_rewrite.so
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
    LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
    LoadModule proxy_connect_module modules/mod_proxy_connect.so
    LoadModule cache_module modules/mod_cache.so
    LoadModule suexec_module modules/mod_suexec.so
    LoadModule disk_cache_module modules/mod_disk_cache.so
    LoadModule file_cache_module modules/mod_file_cache.so
    LoadModule mem_cache_module modules/mod_mem_cache.so
    LoadModule cgi_module modules/mod_cgi.so
    
    
    Include conf.d/*.conf
    
    
    User apache
    Group apache
    
    UseCanonicalName off
    
    
    DocumentRoot /var/www/html/megafolder
    
    <Directory />
        Options Includes FollowSymLinks
        AllowOverride None
    </Directory>
    
    
    
    <IfModule mod_userdir.c>
    
    </IfModule>
    
    
    DirectoryIndex index.html index.html.var index.php
    
    <Files ~ "^\.ht">
        Order allow,deny
        Deny from all
    </Files>
    
    
    TypesConfig /etc/mime.types
    
    
    DefaultType text/plain
    
    
    <IfModule mod_mime_magic.c>
    #   MIMEMagicFile /usr/share/magic.mime
        MIMEMagicFile conf/magic
    </IfModule>
    
    
    HostNameLookups on
    
    ErrorLog logs/error_log
    
    
    LogLevel warn
    
    
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    LogFormat "%{Referer}i -> %U" referer
    LogFormat "%{User-agent}i" agent
    
    
    
    CustomLog logs/access_log "combined"
    
    
    ServerSignature On
    
    
    Alias /icons/ "/var/www/icons/"
    
    <Directory "/var/www/icons">
        Options Indexes MultiViews
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    
    
    <IfModule mod_dav_fs.c>
        # Location of the WebDAV lock database.
        DAVLockDB /var/lib/dav/lockdb
    </IfModule>
    
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
    
    
    <Directory "/var/www/cgi-bin">
        AllowOverride None
    Options +ExecCGI
    order allow,deny
    allow from all
    </Directory>
    
    IndexOptions FancyIndexing VersionSort NameWidth=* HTMLTable
    
    
    AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
    
    AddIconByType (TXT,/icons/text.gif) text/*
    AddIconByType (IMG,/icons/image2.gif) image/*
    AddIconByType (SND,/icons/sound2.gif) audio/*
    AddIconByType (VID,/icons/movie.gif) video/*
    
    AddIcon /icons/binary.gif .bin .exe
    AddIcon /icons/binhex.gif .hqx
    AddIcon /icons/tar.gif .tar
    AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
    AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
    AddIcon /icons/a.gif .ps .ai .eps
    AddIcon /icons/layout.gif .html .shtml .htm .pdf
    AddIcon /icons/text.gif .txt
    AddIcon /icons/c.gif .c
    AddIcon /icons/p.gif .pl .py
    AddIcon /icons/f.gif .for
    AddIcon /icons/dvi.gif .dvi
    AddIcon /icons/uuencoded.gif .uu
    AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
    AddIcon /icons/tex.gif .tex
    AddIcon /icons/bomb.gif core
    
    AddIcon /icons/back.gif ..
    AddIcon /icons/hand.right.gif README
    AddIcon /icons/folder.gif ^^DIRECTORY^^
    AddIcon /icons/blank.gif ^^BLANKICON^^
    
    DefaultIcon /icons/unknown.gif
    
     
    ReadmeName README.html
    HeaderName HEADER.html
    
    IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
    
    
    AddLanguage ca .ca
    AddLanguage cs .cz .cs
    AddLanguage da .dk
    AddLanguage de .de
    AddLanguage el .el
    AddLanguage en .en
    AddLanguage eo .eo
    AddLanguage es .es
    AddLanguage et .et
    AddLanguage fr .fr
    AddLanguage he .he
    AddLanguage hr .hr
    AddLanguage it .it
    AddLanguage ja .ja
    AddLanguage ko .ko
    AddLanguage ltz .ltz
    AddLanguage nl .nl
    AddLanguage nn .nn
    AddLanguage no .no
    AddLanguage pl .po
    AddLanguage pt .pt
    AddLanguage pt-BR .pt-br
    AddLanguage ru .ru
    AddLanguage sv .sv
    AddLanguage zh-CN .zh-cn
    AddLanguage zh-TW .zh-tw
    
    
    LanguagePriority en ru ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR sv zh-CN zh-TW
    
    
    ForceLanguagePriority Prefer Fallback
    
    
    AddDefaultCharset windows-1251
    
    AddType application/x-httpd-php .php .htm .html .phtml 
    
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    
    
    AddHandler cgi-script .cgi .pl
    
    
    AddHandler server-parsed .html .htm
    
    
    AddHandler type-map var
    
    
    AddType text/html .shtml .html
    AddOutputFilter INCLUDES .shtml .html
    
    ErrorDocument 404 /404.php
    
    
    Alias /error/ "/var/www/error/"
    
    <IfModule mod_negotiation.c>
    <IfModule mod_include.c>
    AddOutputFilter Includes .html
    
        <Directory "/var/www/error">
            AllowOverride None
            Options IncludesNoExec
            AddOutputFilter Includes html
            AddHandler type-map var
            Order allow,deny
            Allow from all
            LanguagePriority en es de fr
            ForceLanguagePriority Prefer Fallback
        </Directory>
    
    
    </IfModule>
    </IfModule>
    
    
    BrowserMatch "Mozilla/2" nokeepalive
    BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
    BrowserMatch "RealPlayer 4\.0" force-response-1.0
    BrowserMatch "Java/1\.0" force-response-1.0
    BrowserMatch "JDK/1\.0" force-response-1.0
    
    
    BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
    BrowserMatch "MS FrontPage" redirect-carefully
    BrowserMatch "^WebDrive" redirect-carefully
    BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully
    BrowserMatch "^gnome-vfs/1.0" redirect-carefully
    BrowserMatch "^XML Spy" redirect-carefully
    BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully
    Options ExecCGI FollowSymLinks +Includes
    NameVirtualHost x.x.x.x:80
    
    
    
    <VirtualHost x.x.x.x:80>
    DocumentRoot "/var/www/html/domain.com"
    ServerName domain.com
    ServerAlias www.domain.com
    AddHandler cgi-script .cgi
    <Directory "/var/www/html/domain.com">
        AllowOverride all
        allow from all
        Options +Indexes +FollowSymlinks
    </Directory>
    
    ScriptAlias /cgi-bin/ "/var/www/html/domain.com/cgi-bin/"
    #ScriptAlias /cgi/ "/var/www/cgi-bin/"
    <Directory "/var/www/html/domain.com/cgi-bin">
    	AllowOverride None
    	Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    	Order allow,deny
    	Allow from all
    </Directory>
    
    
    ErrorLog logs/domain.com-error_log
    XBitHack on
    </VirtualHost>
    
    RLimitCPU 80 90
    RLimitMEM 3800 4800
    RLimitNPROC 80 90
    ScriptLog /var/log/cgiscript.log
    
    


    Here is error in domain.com-error_log

    Code:
    Premature end of script headers: perl4.pl
    Suexec.log is empty
     
  6. topdog

    topdog Active Member

    For selinux check the file /var/log/audit/audit.log
     
  7. topdog

    topdog Active Member

    Did you set executable permissions on the script ?

    Code:
    chmod +x script_name
     
  8. a4411

    a4411 New Member

    There is nothing interesting here. Only cron and login info.

    it did't help, for scripts i tryed 755, 777 750 and other chmods. Owner of script - apache apache
     
    Last edited: Jul 23, 2008
  9. a4411

    a4411 New Member

    24 hours later, problem WAS SOLVED!!!

    The reason was next strings in apache config:


    RLimitCPU 80 90
    RLimitMEM 3800 4800
    RLimitNPROC 80 90

    As I commented it, all begin to works fine.

    Can anyone explain me, why?
     

Share This Page