web-dev-qa-db-fra.com

Erreur fatale: appel de la fonction indéfinie sqlsrv_connect ()

J'ai rencontré pas mal de messages sur le même sujet, mais je suis toujours incapable de le résoudre et je le 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-PC\SQLExpress";
$connectionOptions = array("Database"=>"Salesforce");
$conn = sqlsrv_connect($serverName, $connectionOptions);
if($conn === false)
{
      die(print_r(sqlsrv_errors(), true));
}

J'ai installé et inclus les éléments suivants dans mon fichier php.ini Situé sous le dossier wamp: C:\wamp\bin\php\php5.4.16:

extension=c:/wamp/bin/php/php5.4.16/ext/php_sqlsrv_53_ts.dll

Mon wampserver fonctionne correctement, de même que les services wampapache et wampsqld. Je suis capable d'exécuter php.exe avec succès. Cependant, je ne peux pas établir 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 je tente de me connecter à SQL Server 2008 R2. Cela pourrait-il être la raison? Devrais-je utiliser MySQL au lieu de SQL? Des pointeurs?

EDIT 2: Je ne vois pas du tout la section sqlsrv lorsque je lance phpinfo() bien que j’ai ajouté extension=php_sqlsrv_54_ts.dll Dans le fichier php.ini Situé dans le dossier bin du serveur Wamp.

enter image description here

28
Sarah

This m'a aidé à arriver à ma réponse. Il y a deux fichiers php.ini Situés, dans mon cas, pour wamp. L'un se trouve sous le dossier php et l'autre dans le dossier C:\wamp\bin\Apache\Apachex.x.x\bin. Lors de la connexion à SQL via la fonction sqlsrv_connect, Nous faisons référence au fichier php.ini Dans le dossier Apache. Ajoutez les éléments suivants (selon votre version) à ce fichier:

extension=c:/wamp/bin/php/php5.4.16/ext/php_sqlsrv_53_ts.dll
10
Sarah

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é du fil

Les problèmes courants incluent:

  • Éditer le mauvais fichier php.ini (C'est typique avec les bundles); le chemin de droite est indiqué dans phpinfo().
  • Oublier de redémarrer Apache.
  • Ne pas être capable de voir les erreurs de démarrage; ceux-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 le résultat de la commande et/ou phpinfo() (selon le type de SAPI que vous configurez):

[Modules PHP]
bcmath
calendrier
Coeur
[...]
SPL
sqlsrv
la norme
[...]

phpinfo()

12
Álvaro González

Si vous utilisez les pilotes Microsoft 3.1, 3.0 et 2.0 . Vérifiez que votre version PHP est déjà installée avec IIS.

Utilisez ce script pour vérifier la version de php:

<?php echo phpinfo(); ?>

OR

Si vous avez installé PHP Manager dans IIS à l'aide du programme d'installation de la plate-forme Web, vous pouvez en vérifier la version.

Ensuite:
Si vous utilisez une nouvelle version de PHP (5.6), veuillez télécharger Pilotes d'ici

Pour la version PHP inférieure à 5.6 - veuillez télécharger Pilotes d'ici

  • Le pilote PHP version 3.1 nécessite PHP 5.4.32 ou PHP 5.5.16 ou version ultérieure.
  • Le pilote PHP version 3.0 nécessite PHP 5.3.0 ou version ultérieure. Si possible, utilisez PHP 5.3.6 ou une version ultérieure.
  • Le pilote PHP Driver version 2.0 fonctionne avec PHP 5.2.4 ou version ultérieure, mais pas avec PHP 5.4. Si possible, utilisez PHP 5.2.13 ou une version ultérieure.

Ensuite, 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 (parcourez les fichiers et appuyez sur OK). Puis redémarrez le serveur IIS

enter image description here

Si cette méthode ne fonctionne pas, veuillez changer le version php et essayez d'exécuter votre script php.  enter image description here Pour modifier le paramètre php version, Abaissez-le et essayez de comprendre ce qui s'est passé.Vous pouvez ensuite télécharger les pilotes pertinents pour suivre les étapes ci-dessus.

3
Elshan

Commencez par vérifier que l’extension est correctement chargée dans phpinfo(); (quelque chose comme sqlsrv devrait apparaître). Sinon, l'extension n'est pas correctement chargée. Vous devez également redémarrer Apache après avoir installé une extension.

0
Dave Child

j'ai même cela parce que dans httpd.conf dans Apache PHPIniDir D:/wamp/bin/php/php5.5.12 c'était incorrect

0
ashkufaraz