Rechercher : dans
Par :

[IIS+PHP] Connexion BDD distante(Access)

Dernière réponse le 24 fév 2009 à 16:47:34 Yoplay, le 5 jan 2007 à 17:43:18 
 Signaler ce message aux modérateurs

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 !

Meilleures réponses pour « [IIS+PHP] Connexion BDD distante(Access) » dans :
PHP - Connexion à un annuaire LDAP Voir Introduction à LDAP PHP permet la connexion et l'envoi de requêtes sur un annuaire LDAP, c'est-à-dire un serveur permettant de stocker des informations de manière hiérarchique. Un serveur LDAP est conçu pour être capable de gérer les opérations...
Connexion à une base Oracle en php Voir1. Périmètre Cet article est un exemple de connexion à une base Oracle par le biais d'un script php. Cet article ne traite pas la configuration de votre serveur Oracle, et de votre client Oracle. Nous partons du principe que vous pouvez accéder à...
PHP - Bases de données VoirPhp permet un interfaçage très simple avec un grand nombre de bases de données. Lorsqu'une base de données n'est pas directement supportée par Php, il est possible d'utiliser un driver ODBC, pilote standard pour communiquer avec les bases de...
Connexion à la base de données avec JDBC VoirConnexion à la base de données L'API (Application Programming Interface) JDBC, c'est-à-dire la bibliothèque de classes JDBC, se charge de trois étapes indispensables à la connexion à une base de données : la création d'une connexion à la...

1

Yoplay, le 10 jan 2007 à 16:47:37

Je remonte le topic.

Aucune idée concernant mon problème ? :)

Répondre à Yoplay

2

Yoplay, le 17 jan 2007 à 17:44:59

Une semaine est passée et je n'ai encore trouvé aucune solution à mon problème.

Re-Up désespéré ~~

Répondre à Yoplay

3

Yoplay, le 29 jan 2007 à 10:58:51
  • +1

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à !

Répondre à Yoplay

4

GuiGui, le 2 jui 2007 à 09:13:05

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

Répondre à GuiGui

5

GuiGui, le 25 jui 2007 à 11:39:11

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

Répondre à GuiGui

6

sat, le 13 fév 2008 à 15:35:12

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.

Répondre à sat

7

sat, le 13 fév 2008 à 15:37:18

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.

Répondre à sat

8

 Mimi, le 24 fév 2009 à 16:47:34

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 !!

Répondre à Mimi
Collection CommentÇaMarche.net