[IIS+PHP] Connexion BDD distante(Access)

[Résolu/Fermé]
Signaler
Messages postés
4
Date d'inscription
vendredi 5 janvier 2007
Statut
Membre
Dernière intervention
29 janvier 2007
-
Messages postés
250
Date d'inscription
lundi 9 mars 2009
Statut
Membre
Dernière intervention
4 décembre 2013
-
Bonjour,

J'ai tout d'abord hésité à poster dans le forum programmation ou réseau... mais tout porte à croire que le problème qui suit n'est pas une erreur de programmation.

Voici mon problème :
Je suis stagiaire, et je developpe une application Web en PHP (hébergée sur un Windows Server 2003, avec PHP installé sous IIS) qui fait appelle à deux bases de données. La base n°1 (Access) se situe sur le même poste, en local donc. Aucun problème pour m'y connecter à partir de mes pages PHP. La base n°2 par contre(Access également) est hébergée sur un autre poste, et il est impossible à mes scripts PHP de s'y connecter. Voici le message d'erreur rencontré :

Warning: odbc_connect(): SQL error: [Microsoft][Pilote ODBC Microsoft Access] '(Inconnu)' n'est pas un chemin d'accès valide. Assurez-vous que le nom du chemin d'accès est correct et qu'une connexion est établie avec le serveur sur lequel réside le fichier., SQL state S1009 in SQLConnect in C:\chemin_d'acces_a mon scripts de connexion base n°2... on line 6
Impossible de se connecter


Les deux serveurs (le Windows Server 2003 hebergeant l'application + la base n°1 et l'autre hebergeant la base n°2) appartiennent au même domaine intranet. Les sources ODBC ont également bien été créées sur le Windows Server 2003 (j'ai pu aller chercher la base n°2 sur le reseau en creant l'ODBC pour celle-ci)

Voici mon script de connexion à la base n°2 :
<?php

$bdd="GestionCommerciale"; // identifiant dsn
$user="root"; // login    
$mdp=""; // password   
$cnx = odbc_connect( $bdd , $user, $mdp) or die ('Impossible de se connecter');

?>


Je précise quand même que je ne peux pas faire autrement dans la configuration, la base n°2 est déjà existente et utilisée par une autre application de gestion (qui se trouve sur le même poste que la base).

J'ai tenté de copier la base n°2 sur le Windows Server 2003, juste pour voir si je pouvais m'y connecter (apres avoir changé le chemin d'acces dans la source OBDC bien sûr), résultat : ça fonctionne.

Alors voilà, comment puis-je me connecter à cette base n°2 distante ? Est-ce un problème de compte utilisateur ? Je ne m'y connais pas énormement en réseau, mais n'hésitez pas à être compliqué dans vos explications :p (Mon maitre de stage saura surement décripter).
Toute aide est la bienvenue, merci !

7 réponses

Messages postés
4
Date d'inscription
vendredi 5 janvier 2007
Statut
Membre
Dernière intervention
29 janvier 2007
7
Problème résolu !

J'ai lu plusieurs problèmes similaires sur divers forums qui étaient sans réponse... peut-être que ça en aidera plus d'un.

J'explique comment j'y suis enfin parvenu :

Au lieu d'utiliser une source de données ODBC de Windows, j'ai créé une chaîne de connexion dans mon script PHP directement.

$chaine_connexion ="
DRIVER=Microsoft Access Driver (*.mdb);
DBQ=//xxx.xxx.xx.xx/dossier_partagé/bdd_access.mdb;
UserCommitSync=Yes;
Threads=3;
SafeTransactions=0;
PageTimeout=5;
MaxScanRows=8;
MaxBufferSize=2048;
DriverId=281;
DefaultDir=C:/ProgramFiles/CommonFiles/ODBC/DataSources";


Partout sur internet j'ai pu voir le chemin d'accès écrit comme ceci :
"\\xxx.xxx.xx.xx\dossier_partagé\bdd_access.mdb;"
avec des \ !
J'ai remplacé les \ par des / (comme l'exemple au dessus), et ça fonctionne.

Voilà !
7
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Salut Yoplay,

J'ai pas mal travaillé le problème mais là je dois avouer que je suis en bout de course!!!
J'ai quelques notions en php et j'essai aussi de me connecter à partir d'un windows 2000 sur mon serveur 2003 pour faire quelques requêtes à ma BDD Access.
J'ai exactement le même problème que toi, (même message d'erreur),
j'ai donc repris ta soluce :-)
Mais comme je suis pas trop doué et certainement maladroit, je n'arrive pas à éxécuter mes requêtes!!!

Ci-joint le programme qui ne fonctionne pas mais qui marchait en local avec les parametres standards
( $cnx = odbc_connect("nom base de donné configuré dans les systèmes de donnée ODBC", "root", "")

<html>
<head>
<title>Consultation de données en PHP :: partie 1</title>
</head>
<body>

<?php
//connection à la BDD Access:
$cnx = "
DRIVER=Microsoft Access Driver (*.mbd);
DBQ=//10.10.100.1/Dossier partagé de mon serveur/Gestion.mbd;
UserCommitSync=Yes;
Threads=3;
SafeTransactions=0;
PageTimeout=5;
MaxScanRows=8;
MaxBufferSize=2048;
DriverId=281;
DefaultDir=C:/Program Files/Common Files/ODBC/DataSources";

//requête SQL:
$sql = "SELECT * FROM STAGIAIRE" ;

//exécution de la requête:
$requete = odbc_do($cnx, $sql) ;

//affichage des données:
while( $result = odbc_fetch_object( $requete ) )
{
echo("<div align=\"center\">".$result->NOMPRENOMSTAGIAIRE." ".$result->DATENAISSSTAGIAIRE." <br>\n") ;
}
?>
</body>
</html>

Please Help me!!!!!
Merci pour ta réponse je compte sur toi!!

GuiGui
> GuiGui
C encore GuiGui,

Juste pour dire que mon problème était un problème de droit mal attribué pour apache

Il m'a suffit d'aller dans services double cliquer sur apache puis onglet connexion et cocher la puce ce compte en prenant un compte du réseau ayant un controle total du dossier. RWXD

A+

GuiGui
Slut les grands. Stp est-ce que tu peux me dire comment tu fais (la fonction de connexion que tu utilise pour te connecter à ta bd) avec ta chaîne de connexion

($chaine_connexion ="
DRIVER=Microsoft Access Driver (*.mdb);
DBQ=//xxx.xxx.xx.xx/dossier_partagé/bdd_access.mdb;
UserCommitSync=Yes;
Threads=3;
SafeTransactions=0;
PageTimeout=5;
MaxScanRows=8;
MaxBufferSize=2048;
DriverId=281;
DefaultDir=C:/ProgramFiles/CommonFiles/ODBC/DataSources";)
?

Dans ton code GuiGui tu places directement ta chaîne dans la fonction odbc_do qui prend comme premier paramètre l'id de la connexion et non la chaîne.
Merci d'avance pour votre aide.
Messages postés
4
Date d'inscription
vendredi 5 janvier 2007
Statut
Membre
Dernière intervention
29 janvier 2007
7
Je remonte le topic.

Aucune idée concernant mon problème ? :)
Messages postés
4
Date d'inscription
vendredi 5 janvier 2007
Statut
Membre
Dernière intervention
29 janvier 2007
7
Une semaine est passée et je n'ai encore trouvé aucune solution à mon problème.

Re-Up désespéré ~~
Slut les grands. Stp est-ce que tu peux me dire comment tu fais (la fonction de connexion que tu utilise pour te connecter à ta bd) avec ta chaîne de connexion

($chaine_connexion ="
DRIVER=Microsoft Access Driver (*.mdb);
DBQ=//xxx.xxx.xx.xx/dossier_partagé/bdd_access.mdb;
UserCommitSync=Yes;
Threads=3;
SafeTransactions=0;
PageTimeout=5;
MaxScanRows=8;
MaxBufferSize=2048;
DriverId=281;
DefaultDir=C:/ProgramFiles/CommonFiles/ODBC/DataSources";)
?

Dans ton code GuiGui tu places directement ta chaîne dans la fonction odbc_do qui prend comme premier paramètre l'id de la connexion et non la chaîne.
Merci d'avance pour votre aide.
Bonjour,

j'ai un problème similaire mais j'utilise wamp.

Mon code est le suivant :

$connexion = sprintf("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\\\xx.xxx.x.xx\\dossier1\\base.mdb");

et j'obtiens l'erreur suivante lorsque je lance mon script :

Warning: odbc_connect() [function.odbc-connect]: SQL error: [Microsoft][Pilote ODBC Microsoft Access] Le moteur de la base de données Microsoft Jet ne peut pas ouvrir le fichier '(Inconnu)'. Il est déjà ouvert en mode exclusif par un autre utilisateur, ou vous devez avoir l'autorisation de visualiser ses données., SQL state S1000 in SQLConnect in C:\wamp\www\monsite\mon_php.php on line 12

J'ai essayé la chaine de connexion proposée par Yoplay mais mon problème persiste.

Avant de passer à wamp, j'utilisais easyPHP et cela fonctionnait correctement.

J'ai donc l'impression que c'est peut être au niveau de wamp qu'il y a quelque chose à configurer ?

Quelqu'un aurait-il une solution ?? Merci !!
Messages postés
250
Date d'inscription
lundi 9 mars 2009
Statut
Membre
Dernière intervention
4 décembre 2013
2
moi aussi , j'ai le même problème et j'ai essayé ce qu'il propose mais aucun résultat