Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/11/2011, 15h17   #1
Invité de passage
 
Inscription : mai 2006
Messages : 13
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 13
Points : 1
Points : 1
Par défaut Fonction readdir inopérente en PHP 5.3.6

Bonjour,

Je fais de l'échange de données entre 2 serveurs A et B.
Pour résumer :
Le serveur A demande au serveur B de faire un traitement spécifique. Quand le serveur B a terminé, il créé un fichier rapport.ini dans un répertoire.
Le serveur A liste le contenu du répertoire distant tant qu'il ne trouve pas le fichier rapport.ini

C'est en gros le code suivant que j'utilise
Ce mécanisme fonctionnait tout à fait.
Mais depuis que j'ai passé un des serveurs en PHP 5.3.6 (l’autre est en PHP 5.3.1), la fonction readdir ne liste plus aucun fichier.

J'ai comparé la configuration des phpinfo.php, sans noter de différences notoires.
Avez-vous des infos sous une régression pour cette fonctionnalité en PHP 5.3.6 ?
Ou est-ce mon code qui vous semble incompatible avec PHP 5.3.6 ?


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
$lRepertoire = "/var/www/htlm/...";
 
$lSshConnect  = ssh2_connect('192.166...', '22');
if ($lSshConnect == FALSE)
{
  // traitement erreur
  ...
 return;
}
if (ssh2_auth_password($lSshConnect, 'util','mtp') == FALSE)
{
   // traitement erreur
  ..
  return;
}
$lSftp = ssh2_sftp($lSshConnect);
$lDir = "ssh2.sftp://".$lSftp."/".$lRepertoire;
$lHandle = opendir($lDir);
$lExtractTermine = FALSE; 
$lTentative = 0;
do
{
   while (FALSE !== ($lFile = readdir($lHandle))) 
  {
	if ($lFile == "rapport.ini")
		$lExtractTermine = TRUE;
  }
  sleep(5);$lTentative++;				
} while ($lExtractTermine == FALSE && $lTentative < 10);
closedir($lHandle);
 
if (!$lExtractTermine)
	return "KO=...";
 
return "OK"
Merci d'avances pour votre aide.
Emmanuel
manu_b est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2011, 15h31   #2
Invité de passage
 
Inscription : mai 2006
Messages : 13
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 13
Points : 1
Points : 1
[QUOTE=manu_b;6338677]Bonjour,

Pour info, j'ai trouvé la raison : en plus de l'installation de PHP5.3.6, la librairie ssh2 a également été mise à jour. La version installée était la 0.11.3. Dans celle-ci comporte un bug signalé sur les échanges entres machines 32 bits et 64 bits. C'était mon cas.
J'ai installé la version de développement (0.11.3-dev) est s'est résolu.
manu_b est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h34.


 
 
 
 
Partenaires

Hébergement Web