PHP IIS7 MSSQL Appel de fonction non définie sqlsrv_connect
J'ai MSSQL Server 2008, microsoft WINDOWS SERVER 2008 RC2 ET PHP 5.4
php.info avoir des lignes
[PHP_PDO_SQLSRV_54_NTS]
extension=php_pdo_sqlsrv_54_nts.dll
[PHP_PDO_ODBC]
extension=php_pdo_odbc.dll
[PHP_SYBASE_CT]
extension=php_sybase_ct.dll
[PHP_SQLSRV_54_NTS]
extension=php_sqlsrv_54_nts.dll
Php info trouvée ici http://89.111.180.28/index.php
je vois des lignes, avec des Extensions php.ini, mais je ne vois pas les lignes avec des extensions SQLSRV dans php.info...
pour se connecter à MSSQL SERVEUR, j'ai utiliser le script
$conn_array = array (
"UID" => "user",
"PWD" => "passw",
"Database" => "database",
"Encrypt" => 1,
"TrustServerCertificate" => 1) ;
$conn2 = sqlsrv_connect('localhost' , $conn_array);
if ($conn2)
{
echo 'MSSQL Connection successful';
}
else
{
die( print_r( sqlsrv_errors(), true));
}
sqlsrv_close( $conn2 );
Mais je vois d'erreur:
Fatal error: Call to undefined function sqlsrv_connect() in C:\inetpub\wwwroot9.111.180.28\index.php on line 18
Veuillez de me dire pourquoi j'ai un message d'erreur et comment faire le bon ?
p.s.: le serveur était déjà redémarré.
Vous n'avez télécharger le
oui et j'ai installer ce
SQLSRV30.EXE
fichier, non? microsoft.com/en-us/download/details.aspx?id=20098oui et j'ai installer ce
OriginalL'auteur Leo Loki | 2012-12-04
Vous devez vous connecter pour publier un commentaire.
J'ai juste eu ce problème moi-même. J'ai finalement obtenu fixe, alors j'ai pensé que je pourrais partager avec vous.
Le problème était que, bien que j'ai eu l'sqlsrv dll installée (copié sur mon php/ext dossier), et je l'avais ajouté dans mon php.ini, dans IIS, il a été "désactivé".
Voici quelques instructions étape par étape, dans le cas où quelqu'un a ce même problème à nouveau. (Ou pour le futur de référence pour moi :))
Télécharger (et installer) les pilotes de SQL Server (.dll)
php -i | more
, et cherchez la ligneextension_dir
. (Pour moi, c'était le quatrième de presse demore
). Alternativement, faire un simple fichier php contenant uniquement<?php phpinfo(); ?>
, et l'exécuter dans le navigateur. Cela permettra de donner les mêmes informations, mais en beaucoup plus facile à lire.Ajouter l'extension à votre php.ini
php -i | more
de nouveau, à la recherche deLoaded Configuration File
, ou vérifiez que le simple script php à nouveau (je vous recommande vivement de le faire, il ne vous économiser du temps et de l'effort). Le chemin que vous y trouverez est le fichier que vous devez modifier.Ajoutez les lignes suivantes à votre php.ini, et l'enregistrer:
[PHP_SQLSRV]
extention=php_sqlsrv_56_nts.dll
Activer l'extension dans le Gestionnaire des services IIS
IIS Manager
, et appuyez sur enter.PHP Manager
PHP Extensions
, cliquez surEnable or Disable an Extension
.Enabled
, regardez sousDisabled
. Lorsque vous le trouvez, cliquez-droit dessus et cliquez surEnable
dans le menu contextuel qui s'affiche.De Test pour s'assurer qu'il a travaillé
phpinfo()
page, vous faites (vous l'avez fait, n'est-ce pas?), et regardez sousRegistered PHP Streams
. Si vous voyezsqlsrv
dans cette liste, vous êtes ensemble!Note: j'ai également eu à installer Microsoft® Pilote ODBC 11.
J'ai php 7.2 et suivi vos instructions. Je peux voir dans php manager que les extensions php_sqlsrv_72_ts_x64 et php_pdo_sqlsrv_72_ts_x64 sont activés. Mais la fonction phpinfo() ne montre pas de sqlsrv, sous flux de PHP, que dois-je vérifier?
OriginalL'auteur Cullub
Votre réponse m'a vraiment aidé debug mon problème. Pour ajouter à répondre à cette question pour les autres qui peuvent avoir installé correctement le PHP PDO SQLSRV .module dll, mais toujours la même erreur.
Il m'a fallu presque une heure pour comprendre cela, mais, même après que je l'ai configuré PHP_PDO_SQLSRV, la fonction
sqlsrv_connect()
ne fonctionne toujours pas.Trouvé, c'est parce que si vous êtes à l'aide de l'AOP extension sqlsrv, il a sa propre bibliothèque avec des fonctions distinctes.
Pour se connecter à la base de données, vous devez faire quelque chose comme ceci:
Vous pouvez consulter tous ici:
http://msdn.microsoft.com/en-us/library/ff628159(v=sql.105).aspx
Si vous n'êtes pas sûr des différences entre les AOP et normal SQLSRV, veuillez vous référer à ce post:
SQLSRV pilote vs driver PDO de PHP avec MS SQL Server
J'ai choisi AOP, car je préfère de données pour être retournés comme des chaînes de caractères (accès plus rapide pour moi à la place de l'analyse de l'objet/types de classe).
OriginalL'auteur Truchainz
Je comprends la situation.
J'ai utilisé la version de PHP 5.4 ci-dessus, de sorte que l'utilisation de PHP pilote pour Windows 3.0.
Pour cette configuration, les clients de la version de SQL 2012, mais j'ai été le client de SQL 2008 version
Le problème est résolu.
OriginalL'auteur Leo Loki