IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web Perl Discussion :

Script Perl écrit un fichier à la racine du site web plutôt qu'à l'emplacement du script


Sujet :

Web Perl

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Script Perl écrit un fichier à la racine du site web plutôt qu'à l'emplacement du script
    Bonjour,

    J'ai un problème avec un script Perl lancé via un site web IIS 7.

    Mon site web est configuré afin de se lancer depuis le répertoire Windows E:\WEBSITE\TOTO\HTML.
    J'ai un sous dossier HTML\user_report où mon script Perl (create_file.pl) est situé. Ce script doit créer un fichier report.txt dans le même répertoire.

    Mais quand je lance http://Mywebsite/user_report/create_file.pl le fichier report.txt est créé dans E:\WEBSITE\TOTO\HTML\report.txt au lieu de E:\WEBSITE\TOTO\HTML\user_report\report.txt.

    Quelqu'un a-t-il une idée d'où vient le problème ?

    Voici le fichier create_file.pl:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #!/usr/bin/perl
    print "content-type: text/plain\n\n";
    use strict;
    use warnings;
     
    my $filename = 'report.txt';
    open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
    print $fh "My first report generated by perl\n";
    close $fh;
    print "done\n";
    Le serveur est un Windows 2008 R2 64bits
    IIS 7.5
    Perl 5.15

    Merci pour votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Le fichier est créé en principe dans le répertoire où tu te trouves au moment où tu lances le script, sauf si tu spécifies un autre chemin. Donc soit tu commences par changer de répertoire avant de lancer le script, soit, plus simplement, tu écris dans ton code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my $filename = 'E:/WEBSITE/TOTO/HTML/user_report/report.txt';
    ou encore:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my $filename = './user_report/report.txt';
    Note que j'ai utilisé des barres obliques droites et non des backslash, parce que c'est, il me semble, le plus simple en Perl sous Windows (Perl fait la traduction). Avec des barres obliques inverses, il faut doubler chacune d'entre elles, ce qui est un peu pénible et assez peu lisible.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Le script est censé être correct
    Bonjour Lolo78

    Merci pour ta réponse. Cependant, la solution que tu proposes n'est pas celle que j'aurai aimé

    Si je lance le script depuis l'url http://Mywebsite/user_report/create_file.pl le fichier étant créé dans le répertoire où je me trouve, il devrait donc bien être dans le répertoire user_report ?

    Voici un peu plus d'informations sur le contexte:
    Je ne peux pas spécialiser le script Perl en fonction de son répertoire: J'ai une centaine de répertoires et chacun contient ce même script Perl qui doit écrire le fichier en local dans son répertoire.
    J'ai une autre installation de ces scripts sur un autre serveur qui a la même configuration (théoriquement...) et sur cet autre serveur le script fonctionne parfaitement en écrivant bien le fichier au bon endroit.
    Cela m'indique que le script est correct et que la différence vient de quelque-chose sur le serveur (réseau ou système).

    Je me demandais s'il n'y avait pas une option d'installation de Perl ou de IIS qui pourrait modifier ce comportement ?

    A noter cependant que la solution que tu proposes fonctionne car en indiquant un chemin (complet ou relatif), le fichier est créé au bon endroit.

    Merci d'avance.

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Une idée ?
    Bonjour,

    Une idée quelqu'un ?
    Help !!!

    Merci

  5. #5
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par pacolik Voir le message
    Si je lance le script depuis l'url http://Mywebsite/user_report/create_file.pl le fichier étant créé dans le répertoire où je me trouve, il devrait donc bien être dans le répertoire user_report ?
    Je ne suis pas sûr que l'on se soit bien compris, je ne dis pas que le fichier est créé dans le répertoire où se trouve le programme que tu lances, mais dans le répertoire où tu te trouves (ou celui où se trouve le script bash, ksh ou .bat ou autre qui lance ton programme) au moment où tu le lances.

    Sinon, une solution est peut-être d'utiliser des variables d'environnement (bon, j'utilise un vocable Unix, mais il y a plus ou moins l'équivalent sous Windows, avec peut-être un nom un peu différent, tu dois voir ce que je veux dire). Le hash spécial %ENV de perl permet de les récupérer et de les utiliser.

  6. #6
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Le "répertoire où tu te trouves" est souvent appelé le répertoire de travail ou le répertoire courant, on peut le modifier dans un programme mais tu ne fais pas ça, donc le répertoire courant est attribué par ce qui lance ton script, autrement dit le serveur. Ça signifie qu'il y a une option de configuration de ton serveur qui gouverne dans quel répertoire il démarre les scripts CGI (à la racine ou dans le répertoire du script) et qu'il va falloir que tu la trouves et que tu la modifies. Ce n'est pas vraiment du Perl donc tu as peu de chance de tomber sur quelqu'un dans ce sous-forum qui va pouvoir t'aider (surtout que IIS + Perl CGI c'est pas trop courant comme configuration).

    --
    Jedaï

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Variables d'environnement
    Bonjour,

    Je vais creuser dans cette direction, je noterai en réponse si j'ai trouvé une solution.
    Merci pour votre aide.

  8. #8
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Répertoire de travail
    Re-Bonjour,

    Je viens de rajouter les lignes ci-dessous dans mon script perl pour identifier le répertoire de travail:
    use Cwd;
    my $repertoire_travail = cwd;

    Effectivement, le répertoire de travail n'est pas le bon pour mon serveur de test alors qu'il est bon pour mon serveur de production où tout fonctionnement correctement. Le problème vient donc bien de là. Merci !!!

    Reste à trouver comment modifier ce paramétrage.

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/04/2012, 16h18
  2. Appliquer un script perl sur un fichier uploadé
    Par Oli_Ifre dans le forum Langage
    Réponses: 4
    Dernier message: 04/04/2007, 11h14
  3. Aide pour insérer un fichier flash dans un site web
    Par constitain dans le forum Flash
    Réponses: 2
    Dernier message: 26/07/2006, 22h59
  4. [Upload] Upload d'un fichier excel sur un site web
    Par oldscrout dans le forum Langage
    Réponses: 3
    Dernier message: 31/03/2006, 10h09
  5. [web] lancer page HTML depuis un script perl
    Par lilou0210 dans le forum Web
    Réponses: 7
    Dernier message: 05/11/2004, 16h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo