Erreur fatale: appel à une fonction non définie sqlsrv connect()
j'ai rencontré pas mal de courrier concernant la même question de sujet, mais je suis toujours incapable de la résoudre et donc je demande. J'essaie de me connecter à sql dans mon script php. Ma chaîne de connexion est:
/* Specify the server and connection string attributes. */
$serverName = "xxx-PCSQLExpress";
$connectionOptions = array("Database"=>"Salesforce");
$conn = sqlsrv_connect($serverName, $connectionOptions);
if($conn === false)
{
die(print_r(sqlsrv_errors(), true));
}
j'ai installé et inclus ce qui suit dans mon fichier php.ini situé sous le dossier wamp: C:wampbinphpphp5.4.16 :
extension=c:/wamp/bin/php/php5.4.16/ext/php_sqlsrv_53_ts.dll
mon wampserver marche très bien, ainsi que les wampapache et wampsqld service. Je suis en mesure d'exécuter le php.exe avec succès. Cependant, je ne peux pas faire la connexion à SQL Server 2008 R2 où se trouve ma base de données. S'il vous plaît aider!
EDIT 1: le serveur wamp exécute le service wampmysql pendant que j'essaie de me connecter à SQL Server 2008 R2 . Serait-ce la raison? Devrais-je utiliser MySQL au lieu de SQL ? Les pointeurs?
EDIT 2: Je ne vois pas la section sqlsrv du tout quand je lance phpinfo() si j'ai ajouté extension=php_sqlsrv_54_ts.dll dans le php.ini fichier situé dans le dossier bin du serveur wamp.
5 réponses
ce m'a aidé à obtenir ma réponse. Il y a deux fichiers php.ini localisés, dans mon cas, pour wamp. L'un est sous le dossier php et l'autre est dans le dossier C:\wamp\bin\apache\Apachex.x.x\bin . Lors de la connexion à SQL via la fonction sqlsrv_connect , nous nous référons au fichier php.ini dans le dossier apache . Ajouter ce qui suit (selon votre version) à ce fichier:
extension=c:/wamp/bin/php/php5.4.16/ext/php_sqlsrv_53_ts.dll
lorsque vous installez des extensions tierces, vous devez vous assurer que tous les paramètres de compilation correspondent:
- version PHP
- Architecture (32/64 bits)
- compilateur (VC9, VC10, VC11...)
- sécurité des fils
les plaies courantes comprennent:
- éditer le mauvais fichier
php.ini(c'est typique avec les paquets); le le droit chemin est indiqué dansphpinfo() - Oubliez pas de redémarrer Apache
-
ne pas pouvoir voir les erreurs de démarrage; celles-ci devraient apparaître dans les journaux Apache, mais vous pouvez également utiliser la ligne de commande pour le diagnostiquer, par exemple:
php -d display_startup_errors=1 -d error_reporting=-1 -d display_errors -c "C:\Path\To\php.ini" -m
si tout va bien, vous devriez voir sqlsrv dans la sortie de commande:
[Modules PHP]
bcmath
calendrier
Noyau
[...]
SPL
sqlsrv
standard
[...]
si vous utilisez Pilotes Microsoft 3.1, 3.0, et 2.0 .
Veuillez vérifier que votre version PHP est déjà installée avec IIS.
utilisez ce script pour vérifier la version php:
<?php echo phpinfo(); ?>
ou
si vous avez installé PHP Manager in IIS en utilisant Web platform Installer, vous pouvez vérifier la version à partir de celui-ci.
puis:
si vous utilisez la nouvelle version de PHP (5.6) veuillez télécharger les pilotes d'ici
pour la version PHP inférieure à 5.6 - s'il vous plaît télécharger pilotes d'ici
- PHP Driver Version 3.1 nécessite PHP 5.4.32, ou PHP 5.5.16, ou plus tard.
- PHP Driver Version 3.0 nécessite PHP 5.3.0 ou tard. Si possible, utilisez PHP 5.3.6, ou plus tard.
- pilote PHP version 2.0 driver fonctionne avec PHP 5.2.4 ou plus tard, mais pas avec PHP 5.4. Si possible, utilisez PHP 5.2.13, ou plus tard.
puis utilisez le gestionnaire PHP pour ajouter les pilotes téléchargés dans le fichier php config .Vous pouvez le faire comme indiqué ci-dessous (parcourir les fichiers et appuyer sur OK).
puis redémarrer le serveur IIS
si cette méthode ne fonctionne pas veuillez changer la version php et essayer d'exécuter votre script php.
Changer le php version pour baisser et essayer de comprendre ce qui s'est passé.ensuite, vous pouvez télécharger les pilotes pertinents fowling mes étapes ci-dessus.
Vérifiez D'abord que l'extension est correctement chargée dans phpinfo(); (quelque chose comme sqlsrv devrait apparaître). Sinon, l'extension n'est pas chargée correctement. Vous devez également redémarrer apache après avoir installé une extension.
j'ai la même parce qu'en httpd.conf dans apache PHPIniDir D:/wamp/bin/php/php5.5.12 qui était incorrect