Le script Perl ne s’exécute pas sous forme HTML

J’ai un fichier guestbook.htm dans le répertoire nommé Chrome (/home/chankey/Desktop/Chrome/guestbook.htm) dont le contenu est donné ci-dessous

   Guestbook   
Name
E-Mail
Location
Comments


Dans le même répertoire Chrome, j’ai un fichier “guestbook.pl” dont le contenu est

 #!/usr/bin/perl my $query_ssortingng = ""; #Get the input if ($ENV{REQUEST_METHOD} eq 'POST') { read(STDIN, $query_ssortingng, $ENV{CONTENT_LENGTH}); } else { $query_ssortingng = $ENV{QUERY_STRING}; } ##### We will remove this print "Content-Type: text/html\n\n"; print "Query Ssortingng is \n
$query_ssortingng"; ##### We will remove this

Lorsque j’exécute le fichier guestbook.htm, un formulaire apparaît, lorsque je remplis les données et que je clique sur le bouton “Ajouter une entrée”, une nouvelle page s’ouvre où le script complet apparaît.

c’est-à-dire que le script “guestbook.pl” n’est pas en cours d’exécution. Puis-je connaître la raison derrière cela? Pourquoi le script ne s’exécute pas? (J’ai déjà donné une autorisation d’exécution à ce fichier).

Dans le fichier httpd.conf, j’ai ajouté

 AddHandler cgi-script cgi pl  Options +ExecCGI  

Il n’est toujours pas en cours d’exécution. Laissez-moi savoir la raison.

Lorsque vous accédez à un fichier localement (via le file:// tapez l’URL dans votre navigateur), il ne s’exécute pas à partir d’un serveur Web, donc:

  • Il n’y a pas d’environnement CGI
  • Les fichiers httpd.conf / .htaccess n’ont aucun effet

Quelques façons de gérer cela:

  • Créez un dossier nommé public_html dans votre maison. Votre serveur Web a probablement un paramètre pour mapper http://localhost/~chankey/ vers /home/chankey/public_html . (Sur MacOSX, le nom préféré est plutôt Sites , je crois.) Sur un système SELinux, vous devrez accorder spécifiquement l’autorisation à Apache d’utiliser cette méthode.
  • Pour le cas spécifique des scripts Perl utilisant le package CGI standard, vous pouvez également les exécuter manuellement à partir d’un shell de terminal et redirect leur sortie vers un fichier temporaire (par exemple, >/tmp/output.html ) auquel vous pouvez accéder.
  • Migrez votre espace de travail de développement dans la propre structure de répertoires de votre serveur Web, généralement /var/www/html/

PS / unrelated: Je recommande fortement que, si vous envisagez de mettre cela sur Internet, vous devriez probablement use CGI; use ssortingct; use CGI; use ssortingct; et avoir le mode tainting activé #!/usr/bin/perl -WT