Précédent   Forum des professionnels en informatique > Systèmes > Windows > IIS
IIS Forum d'entraide serveur Web IIS (Internet Information Services)
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 03/03/2008, 21h45   #1
Invité de passage
 
Inscription : octobre 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 5
Points : 1
Points : 1
Par défaut Problème avec les CGI MySQL en C++ sous IIS7 - Vista

L'utilisation de la librairie MySQL libmysql.dll dans un CGI en C++ sous Vista / IIS7 provoque le message suivant :
runtime error R6030 - CRT not initialized

Voici le code qui génère ce message:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "stdafx.h"
#include "TestCGI.h"

#include "mysql.h"


int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
		printf("Content-Type: text/html\n\n");
		printf("\n<html><body>Hello world 2</body></html>");
		
		mysql_init((MYSQL*) 0); // Appel MySQL, qui génère le message "runtime error R6030 - CRT not initialized" 

		return 0;
}

Ce code fonctionne bien sûr sans problème avec IIS6 sous XP.
Il utilise la librairie libmysql.dll de MySQL 5.05 (même résultat avec la 5.1).

Je soupçonne un problème de protection Vista plutôt qu'un problème IIS7 car ce code ne fonctionne pas non plus avec un autre serveutr Web comme AbyssWS. Le message d'erreur trouvé dans la log est alors "Broken pipe".

Si vous avez le même problème dîtes le moi, et si vous avez la solution ma gratitude éternelle vous est acquise !...


Emmanuel
vilmin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 14h10   #2
Expert Confirmé Sénior
 
Homme Mathias Gaunard
Ingénieur développement logiciels
Inscription : décembre 2003
Messages : 3 543
Détails du profil
Informations personnelles :
Nom : Homme Mathias Gaunard
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : décembre 2003
Messages : 3 543
Points : 4 408
Points : 4 408
Et si tu lances le programme directement, sans passer par un serveur web ?
__________________
Boost ftw
loufoque est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 21h23   #3
Invité de passage
 
Inscription : octobre 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 5
Points : 1
Points : 1
Merci de t'intéresser à mon problème, je commençais à me sentir un peu seul...
Si je le lance directement ça marche sans problème, il m'affiche bien "Hello Word", sans aucun message d'erreur.
vilmin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 21h34   #4
Rédacteur/Modérateur
 
Avatar de JolyLoic
 
Homme Loïc Joly
Développeur informatique
Inscription : août 2004
Messages : 4 353
Détails du profil
Informations personnelles :
Nom : Homme Loïc Joly
Âge : 37
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2004
Messages : 4 353
Points : 8 101
Points : 8 101
A priori, IIS lance le code sous un utilisateur spécial, différent de l'utilisateur loggé. Peut-être le problème est-il lié ?

Peut-tu monter le code sous le serveur de développement livré avec Visual Studio, qui lui ne gère pas ces aspects, pour voir ? Ou alors dans l'autre sens, lancer le script après t'être loggé avec le même utilisateur que IIS ?

Autrement, tu auras peut-être plus de chance en cherchant sur le forum IIS ?
Forum des développeurs > Hardware, Systèmes et Logiciels > Windows > IIS
JolyLoic est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 23h37   #5
Invité de passage
 
Inscription : octobre 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 5
Points : 1
Points : 1
Effectivement, c'est la bonne voie : en remplaçant IUSR (l'utilisateur IIS7) par mon utilisateur habituel ça marche ! Bravo pour cette excellente idée.

Par contre j'aimerai bien me connecter sous IUSR pour voir ce qui se passe et comprendre en quoi ça bloque pour libmysql.dll mais je ne sais pas ou trouver le mot de passe...on ne le trouve plus dans la gestion des utilisateurs comme sous XP...?!.. Tu aurais une idée la dessus aussi ?

Merci encore pour ton aide
vilmin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2008, 00h14   #6
Rédacteur/Modérateur
 
Avatar de JolyLoic
 
Homme Loïc Joly
Développeur informatique
Inscription : août 2004
Messages : 4 353
Détails du profil
Informations personnelles :
Nom : Homme Loïc Joly
Âge : 37
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2004
Messages : 4 353
Points : 8 101
Points : 8 101
Mmm, aucune idée...

Par contre, question bête : Dans quelle répertoire est cette DLL ? Ca peut être juste une histoire de path. J'ai déjà du faire une magouille genre mettre la DLL en delay load dans le programme, et au début du main modifier la variable path pour qu'elle contienne le chemin de la DLL.
JolyLoic est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2008, 10h01   #7
Invité de passage
 
Inscription : octobre 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 5
Points : 1
Points : 1
La DLL se trouve dans le même répertoire que le CGI, il ne devrait donc pas y avoir de problème d'autorisation. Il doit plutôt se trouver (le problème) entre cette DLL et le serveur MySQL.
J'ai trouvé des infos sur l'utilisateur IUSR de IIS7 : c'est un nouveau type d'utilisateur système sans mot de passe (comment ça peut marcher ??) et il ne semble pas possible de se connecter sous ce compte ni même de faire un "runas /user:IUSR testcgi.exe" sous l'invite de commande.
J'ai donc créé un autre utilisateur IUSR_Nomdela machine (comme sous XP) et j'ai donné ce compte à IIS7 ( Default Web Site / Authentication).
Malheureusement ça ne marche pas plus, même si je le met dans le groupe des Administrateurs. Finalement, il n'y a qu'avec mon login (Administrateur aussi) que ça marche. Va comprendre...
Mais c'est vrai que tout ça concerne davantage IIS et MySQL que le C++. Mon premier post était dans le groupe MySQL, le modérateur a considéré que ça concernait davantage le C++ et m'a mis dans ce groupe mais finalement ce n'était pas justifié. Comment faire pour déplacer la discussion dans le groupe IIS ?
vilmin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2008, 12h57   #8
Rédacteur/Modérateur
 
Avatar de JolyLoic
 
Homme Loïc Joly
Développeur informatique
Inscription : août 2004
Messages : 4 353
Détails du profil
Informations personnelles :
Nom : Homme Loïc Joly
Âge : 37
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2004
Messages : 4 353
Points : 8 101
Points : 8 101
Citation:
Envoyé par vilmin Voir le message
Comment faire pour déplacer la discussion dans le groupe IIS ?
Il n'y a qu'à demander...
JolyLoic est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h21.


 
 
 
 
Partenaires

Hébergement Web