Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1560 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  Le répertoire courant de mon script perl est " / " ?!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Le répertoire courant de mon script perl est " / " ?!

n°1814859
Sailing_Po​rt
Posté le 21-11-2008 à 11:12:32  profilanswer
 

Bonjour à tous,
 
Après une migration de serveur, j'ai importé une base Postgresql, puis transféré le contenu d'un site contenant de nombreux scripts perl.
 
La plupart de ces scripts ne se lancent pas et, après vérification, la raison semble en être la suivante : au lieu de prendre le répertoire courant (Cwd) du script en question, je me retrouve constamment avec un répertoire courant Root, donc /. Or ceci me pose un gros problème car j'utilise presque partout des chemins relatifs... et de fait, les commandes des scripts ne se lancent pas car le chemin d'accès (notamment aux fichiers html incorporant mes formulaires) en devient faussé.
 
Également, et par ailleurs très troublant, je remarque que le répertoire courant en question change en fonction des Refresh sur mes navigateurs (IE comme Firefox)! Cwd me renvoie aléatoirement le répertoire racine de mon serveur (le plus souvent), ou bien quelquefois le répertoire de base de mes fichiers web (www/httpdocs), ou bien quelque fois le véritable répertoire courant du script que je tente de lancer (et dans ce cas, évidemment, le script se lance correctement)....  
Je n'arrive pas à comprendre comment la même commande peut me renvoyer 3 résultats différents de façon aléatoire juste en faisant un Refresh!!
 
Ce problème vous est-il fammilier ?
 
Cordialement
 
Frédéric


Message édité par Sailing_Port le 21-11-2008 à 11:22:34
mood
Publicité
Posté le 21-11-2008 à 11:12:32  profilanswer
 

n°1814872
matafan
Posté le 21-11-2008 à 11:41:53  profilanswer
 

Iniitalement le répertoire courant d'un programme est le répertoire qui était le répertoire courant au moment de l'invocation du programme. Je ne vois pas ce qui te fais penser que le répertoire courant de ton programme pourrait être le répertoire dans lequel se trouve le programme. Ca ne sera le cas que tu tu es dans le répertoire du programme au moment où tu lances le programme.

n°1814873
gilou
Modérateur
Modzilla
Posté le 21-11-2008 à 11:42:14  profilanswer
 

Ca donne quoi avec:
use FindBin qw($Bin $RealBin);
tu as la valeur correcte du repertoire que tu veux dans $Bin ou dans $RealBin, non??
A+,


Message édité par gilou le 21-11-2008 à 11:44:38

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1814881
Sailing_Po​rt
Posté le 21-11-2008 à 11:56:22  profilanswer
 

Bonjour et merci de vos réponses.
 
Pour répondre à gilou, $Bin et $ReakBin me renvoient la même valeur : /usr/sbin. N'étant pas un expert, je ne suis pas sûr de savoir à quoi correspondent ces valeurs.
 
Mes scripts sont des petits .pl à partir d'un répertoire /cgi, je m'attendais donc à ce que les liens en chemin relatif que j'ai incorporés se construisent à partir de ce même dossier.... ce qui n'est pas le cas, vous l'aurez désormais compris.

n°1814923
gilou
Modérateur
Modzilla
Posté le 21-11-2008 à 13:26:56  profilanswer
 

Citation :

Pour répondre à gilou, $Bin et $ReakBin me renvoient la même valeur : /usr/sbin. N'étant pas un expert, je ne suis pas sûr de savoir à quoi correspondent ces valeurs.

Bizarre ça, normalement ca renvoie le répertoire ou se trouve le script qui est lancé.
Ca marche en Perl, mais en CGI Perl, je n'en sais rien, ce n'est pas une chose que je pratique couramment.
 
A tout hasard, fais ceci:
use FindBin($Bin $RealBin);
FindBin::again();
et regardes les valeurs de $Bin et $RealBin des fois que les valeurs aient ete appelées et mises en cache par un autre module.
A+,


Message édité par gilou le 21-11-2008 à 13:35:28

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1814983
Sailing_Po​rt
Posté le 21-11-2008 à 14:36:11  profilanswer
 

Bonjour,
 
Le résultat est le même. Je ne comprends vraiment pas.  
Merci tout de même.

n°1815052
gilou
Modérateur
Modzilla
Posté le 21-11-2008 à 15:47:33  profilanswer
 

En googlant, on trouve que FindBin marche pas avec mod_perl, j'en déduis donc que ce doit être ce qui t'arrive.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1817119
Sailing_Po​rt
Posté le 26-11-2008 à 15:48:07  profilanswer
 

.... Je ne comprends plus!!!
 
Maintenant que je refais le test, $Bin me renvoie bien le bon chemin courant.... 2 fois sur 3!! à chaque Refresh la valeur est différente.
Lorsque je lance mon script à partir de mon lien d'origine, celui-ci s'affiche correctement... ou pas! je n'arrive pas à comprendre comment une variable globale peut afficher plusieurs résultats aléatoirement.....
 
J'ai évidement vidé le cache dans les deux navigateurs (IE et Firefox) pour être sûr que le problème ne venait pas de là.....


Message édité par Sailing_Port le 26-11-2008 à 15:48:38
n°1817177
gilou
Modérateur
Modzilla
Posté le 26-11-2008 à 16:55:43  profilanswer
 

Si c'est du CGI perl, tu as essayé $ENV{'SCRIPT_FILENAME'} ??
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1817867
Sailing_Po​rt
Posté le 27-11-2008 à 17:08:47  profilanswer
 

gilou,
 
$ENV{'SCRIPT_FILENAME'} me donne bien le chemin complet de mon script. Après quelques recherches, il est possible que ceci ai à voir avec mod_perl. Mais je ne comprends pas vraiment quoi....

mood
Publicité
Posté le 27-11-2008 à 17:08:47  profilanswer
 

n°1817973
gilou
Modérateur
Modzilla
Posté le 27-11-2008 à 18:23:12  profilanswer
 

Si tu fais du CGI perl, il faut alors regarder la doc spécifique correspondante.
La, c'était la 5e reponse de google avec "CGI Perl script pathname" qui m'a donné l'info.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  Le répertoire courant de mon script perl est " / " ?!

 

Sujets relatifs
Ecrire dans un repertoire spécifiqueinsertion de script pour livre d'or
Chercher répertoire en VBA Macro ExcelProblème courant du tableau 2D
cherche scriptrecherche Script php de pari sportif .
perl et interface graphique[PERL] boucle imbriquées
Windev lancer du script VB Scriptscript de comparaison suivant des critères
Plus de sujets relatifs à : Le répertoire courant de mon script perl est " / " ?!


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR