Probleme avec opendir pour acces reseau

Petit nouveau ! | 4 Messages

06 août 2009, 10:07

Bonjour,

Je suis en train de développer une page en php et j'ai un petit soucis. J'ai une fonction qui va chercher tous les fichiers présents dans des dossiers sur un serveur de fichier distant et ça ne marche pas. J'ai copié un de ces répertoires en local sur le serveur web et ça fonctionne.
Adresse distante: \\powxp200\d$\archive\COMPODISTRIB FACTURES
Adresse local: D:\archive\AEROCHEM FACTURES
J'ai déjà essayé de doubler les \ ( \\\\powxp200\\d$\\archive\\CALORIE FACTURES ) mais même effet.
Voici mon code:

Code : Tout sélectionner

<?php function Insert_Num_Fact($Rep, $NomSoc, $connexion){ echo $Rep; if ($handle = opendir($Rep)) { while (false !== ($file = readdir($handle))) { /*echo $file; echo "<br>";*/ if(substr($file, -3) == "PDF"){ $query = "INSERT INTO GZ_LISTE_PDF(Numero, Societe) VALUES('$file', '$NomSoc')"; $result = odbc_exec($connexion,$query); //Execution de la requete } } closedir($handle); } else echo "<br> erreur chemin <br>"; } $RepAER = "D:\archive\AEROCHEM FACTURES"; $RepCAL = "\\\\powxp200\\d$\\archive\\CALORIE FACTURES"; $RepCMPDIS = "\\powxp200\d$\archive\COMPODISTRIB FACTURES"; $RepCMP20 = "\\powxp200\d$\archive\COMPOSITES20 FACTURES"; $RepCMP = "\\powxp200\d$\archive\COMPOSITES FACTURES"; $RepFRD = "\\powxp200\d$\archive\FROID FACTURES"; $RepGTC = "\\powxp200\d$\archive\GTC FACTURES"; $RepPLX = "\\powxp200\d$\archive\PLASTIQUES FACTURES"; $server="powxp200"; //Nom du serveur de la Db $db="GZ_FACTURE_PDF_Test"; //Nom de la Db $user="user"; //Nom utilisateur $password="pass"; //Mot de passe //Connexion à la Db $connexion=odbc_connect("DRIVER=SQL Server;SERVER=".$server.";UID=".$user.";PWD=".$password.";DATABASE=".$db.";Address=".$server.",1433","",""); //Purge des tables $query = "DELETE FROM GZ_LISTE_PDF"; $result = odbc_exec($connexion,$query); //Execution de la requete if (htmlspecialchars($_POST['TOUTES']) != '') Insert_Num_Fact($checkALL); else{ if (htmlspecialchars($_POST['AEROCHEM']) != '') Insert_Num_Fact($RepAER, htmlspecialchars($_POST['AEROCHEM']), $connexion); if (htmlspecialchars($_POST['CALORIE']) != '') Insert_Num_Fact($RepCAL, htmlspecialchars($_POST['CALORIE']), $connexion); if (htmlspecialchars($_POST['COMPOSITES_DISTRIBUTION']) != '') Insert_Num_Fact($RepCMPDIS, htmlspecialchars($_POST['COMPOSITES_DISTRIBUTION']), $connexion); if (htmlspecialchars($_POST['COMPOSITES_20']) != '') Insert_Num_Fact($RepCMP20, htmlspecialchars($_POST['COMPOSITES 20']), $connexion); if (htmlspecialchars($_POST['COMPOSITES']) != '') Insert_Num_Fact($RepCMP, htmlspecialchars($_POST['COMPOSITES']), $connexion); if (htmlspecialchars($_POST['FROID']) != '') Insert_Num_Fact($RepFRD, htmlspecialchars($_POST['FROID']), $connexion); if (htmlspecialchars($_POST['GTC']) != '') Insert_Num_Fact($RepGTC, htmlspecialchars($_POST['GTC']), $connexion); if (htmlspecialchars($_POST['PLASTIQUES']) != '') Insert_Num_Fact($RepPLX, htmlspecialchars($_POST['PLASTIQUES']), $connexion); } odbc_close($connect); ?>
Si quelqu'un peut m'aider à faire fonctionner le opendir avec les chemins réseaux merci par avance.
Greg

Administrateur PHPfrance
Administrateur PHPfrance | 977 Messages

06 août 2009, 10:43

le problème vient peut être de l'espace dans ton répertoire, essai avec

D:\archive\AEROCHEM%20FACTURES
pro : http://www.ohweb.fr -> studio de développement en PHP, expertise en e-commerce, certifié PrestaShop
perso : http://www.olecorre.com -> un dico de termes informatiques

J'ai toujours rêvé d'un ordinateur qui soit aussi facile à utiliser qu'un téléphone. Mon rêve s'est réalisé : je ne sais plus comment utiliser mon téléphone. [Bjarne Stroustrup]

Petit nouveau ! | 4 Messages

06 août 2009, 10:52

Je viens d'essayer et ça ne marche pas. Mais c'est l'adresse de la forme \\powxp200\d$\archive\COMPODISTRIB FACTURES qui ne fonctionne pas. L'autre en local marche bien malgré l'espace.

Administrateur PHPfrance
Administrateur PHPfrance | 977 Messages

06 août 2009, 10:57

ton répertoire est sur le même serveur que celui qui execute ton code ?
pro : http://www.ohweb.fr -> studio de développement en PHP, expertise en e-commerce, certifié PrestaShop
perso : http://www.olecorre.com -> un dico de termes informatiques

J'ai toujours rêvé d'un ordinateur qui soit aussi facile à utiliser qu'un téléphone. Mon rêve s'est réalisé : je ne sais plus comment utiliser mon téléphone. [Bjarne Stroustrup]

Petit nouveau ! | 4 Messages

06 août 2009, 11:06

Non les répertoires sont sur un serveur de fichier et mon code est exécuté sur mon serveur web (2 machines différentes). Pour faire un test j'ai copié un répertoire sur la machine où tourne le serveur web (D:\archive\AEROCHEM FACTURES) et là ça marche bien.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

06 août 2009, 14:32

Et tu n'aurais pas un message d'erreur qui pourrait te dire pourquoi ça ne fonctionne pas ?

As-tu vérifié que PHP était bien autorisé à accéder au dossier partagé sur ton serveur de fichier ?
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 4 Messages

06 août 2009, 16:10

Non je n'ai pas de message d'erreur. Je travaille partout avec le compte admin systeme pour pas avoir de problème. Les répertoires en question on les droits admin systeme. Les services Apache s'exécute avec les droits admin systeme. Donc tout le monde a les même droits.