2010-01-29 11 views
0

J'essaie de créer un modèle de base qui charge ensuite les données en fonction des actions entreprises. J'ai inclus (requis) quelques pages ce qui était bien mais quand j'ai inclus un autre dossier que j'ai eu une erreur interne de 500. coller le code directement et cela fonctionne bien:Pourquoi mon programme Perl CGI échoue-t-il lorsque j'inclue un fichier?

Voici ce que j'ai;

#!/usr/bin/perl 
use strict; 
use warnings; 
use LWP::Simple; 
require LWP::UserAgent; 
use DBI; 


    #deal with post requests 
    require "perl/post-sort.pl"; 
    #loading stylesheets and javascripts 
    require "header.pl"; 
    # bring in loggin js 
    if($arg{REQUEST_KEY} eq "") { 
     require "javascript/js-main-login.pl"; 
    } 
    print "</head> \n"; 
    print " \n"; 
    ... 
    ... 

perl/post-sort.pl

my %arg =(); 
for (split /\&/, <STDIN>) { 
    my ($key, $val) = split /=/; 
    $val =~ s/\+/ /g; 
    $val =~ s/%([0-9a-fA-F]{2})/chr(hex($1))/ge; 
    $arg{$key} = $val; 
} 

Toute aide très appréciée.

+2

Que dit le journal des erreurs? – friedo

+0

Commencez par diviser le script en deux afin de déterminer quelle ligne le fait échouer. Ensuite, dites-nous quelle ligne c'est. –

+0

Pourquoi ne pas utiliser des modules au lieu d'avoir besoin de code? – daotoad

Répondre

4

Une erreur interne du serveur 500 indique souvent un en-tête incorrect ou manquant. Assurez-vous que dans le code inclus, la première chose qui s'imprime (vers le navigateur) est l'en-tête, ou assurez-vous que rien ne s'imprime et que le code original affichera le bon en-tête. Une autre possibilité est qu'un fichier que vous êtes require 'ne retourne pas "vrai comme la dernière instruction" (c'est-à-dire ne se termine pas par un 1;), ce qui provoquerait l'échec de votre script lors de la compilation et produirait une erreur 500.

Voir aussi this apropos discussion on debugging CGI scripts plus tôt aujourd'hui.