web-dev-qa-db-fra.com

php 7 incapable d'initialiser sqlsrv

J'ai cherché toute la journée pour trouver une solution pour sqlsrv dll sur php 7 VC14 x64 Thread Safe et je n'ai pas trouvé de solution. Est-ce que quelqu'un a résolu ce problème:

[04-Oct-2015 19:48:05 UTC] PHP Warning:  PHP Startup: pdo_sqlsrv: Unable to initialize module
Module compiled with module API=20131226
PHP    compiled with module API=20141001
These options need to match
 in Unknown on line 0

Voici mes informations php7 RC4:

System  Windows NT 6.0 build 6002 (Windows Server 2008 Standard Edition Service Pack 2) AMD64
Build Date  Sep 29 2015 17:15:28
Compiler    MSVC14 (Visual C++ 2015)
Architecture    x64
8

sqlsrv n'est pas encore prêt pour PHP7 mais ce n'est pas vrai. Il n'a pas été publié depuis 2012. La dernière version date de mai 2015. Maintainer est Microsoft et la version pour PHP7 est prévue pour le début de l'année prochaine.

https://github.com/Azure/msphpsql/issues/58

Mettre à jour:

Le pilote est disponible pour PHP jusqu'à la version 7.1, même pour Linux aujourd'hui (mars 2017).

https://github.com/Microsoft/msphpsql

13
kba

Pour référence future (testé sur Windows 7 avec Xampp et PHP 7.0.13): 

  1. Téléchargez et installez ODBC les pilotes ici: https://www.Microsoft.com/en-US/download/details.aspx?id=36434

  2. Téléchargez la DLL ici (les versions 7.0 et 7.1 peuvent être trouvées): https://github.com/Microsoft/msphpsql/releases

  3. Ouvrez votre fichier "php.ini} _" et recherchez la ligne "extension_dir". Cela vous indiquera où placer les fichiers DDL. Note: Sous Xampp, cela devrait ressembler à: "C:\xampp\php\ext"

 enter image description here

  1. Placez les fichiers DLL dans l'archive Zip dans votre répertoire d'extension. Assurez-vous de sélectionner la version appropriée. Note: Au départ, j'ai essayé d'utiliser la version x64, mais cela n'a pas fonctionné. Ensuite, j'ai remplacé la DLL par la version x86 et cela a finalement fonctionné.

 enter image description here

  1. De retour dans votre fichier "php.ini", vous devez ajouter la ligne suivante: "extension = php_pdo_sqlsrv_7_ts.dll". Note: Xampp utilise la version sécurisée de la bande de roulement.

 enter image description here

  1. Assurez-vous de redémarrer votre service Apache.

 enter image description here

Exemple de code à tester:

$db = "the name of your database"
$password = "password";
$server = "IP address or named pipe";
$user = "username"

try {

    $connection = new PDO(
        "sqlsrv:Server=" . $server . 
            ";Database=" . $db, 
        $password, 
        $user
    );

    $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

} catch (PDOException $exception) {

    var_dump($exception);
}

Pour mémoire, le lien direct vers les bibliothèques du serveur SQL est ici

sqlsrv for php 7

La version 32 et 64 bits est-elle à la fois pour ts et nts?

1
magallanes