J'ai mis à niveau mon PHP 5.6.30 ( https://www.apachefriends.org/de/download.html ) vers PHP 7.0 ( https://bitnami.com/ pile/wamp/installateur )
Jusqu'à présent, tout a bien fonctionné et le temps de chargement de ma page est passé de 1,2 seconde à 300 ms environ, lorsque j'utilise une base de données MySQL. Mais maintenant, j'essaie de me connecter à une base de données MSSQL avec le script simple suivant, qui fonctionnait bien avec mon ancienne installation (PHP 5.6):
<?php
//Use the machine name and instance if multiple instances are used
$server = 'Server-Adress';
$user = '';
$pass = '';
//Define Port
$port='Port=1433';
$database = 'Databasename';
$connection_string = "DRIVER={SQL Server};SERVER=$server;$port;DATABASE=$database";
$conn = odbc_connect($connection_string,$user,$pass);
if ($conn) {
echo "Connection established.";
} else{
die("Connection could not be established.");
}
$sql = "SELECT * FROM st3_200 WHERE identifier = 1";
$result = odbc_exec($conn,$sql);
// Get Data From Result
while ($data[] = odbc_fetch_array($result));
// Free Result
odbc_free_result($result);
// Close Connection
odbc_close($conn);
// Show data
print_r($data);
?>
Mais maintenant, j'ai une erreur dans mes journaux qui dit:
[Jeu 10 déc 11: 55: 26.629956 2015] [: erreur] [pid 260: tid 968] [client :: 1: 63003] PHP Erreur fatale: Erreur non capturée: Appel à undefined fonction odbc_connect () dans C:\Bitnami\wampstack-7.0.0-0\Apache2\htdocs\test\query.php: 11\nStack trace:\n # 0 {principal}\n ajouté C:\Bitnami\wampstack-7.0.0-0\Apache2\htdocs\test\query.php sur ligne 11
Tout d'abord, je pensais que mon php.ini avait une extension manquante, alors j'ai activé "extension = php_pdo_odbc.dll"
la différence avec le php.ini de la version 5.6 est que l'extension: "extension = php_mssql.dll" est activée. Mais je ne les trouve pas dans le nouveau PHP 7.0.ini
Donc, mon intension est qu'il n'y a pas encore de pilote pour odbc et PHP 7? J'ai trouvé un pilote pour Linux ici: https://aur.archlinux.org/packages/php7- odbc/
Mais j'ai besoin de quelque chose pour mon environnement Windows.
Est-ce que quelqu'un a eu le même problème et l'a déjà résolu?
Merci et salutations Domi
Jetez un oeil dans votre php.ini, la chaîne
extension=php_odbc.dll
semble manquer dans les nouvelles installations, au moins, je devais l’ajouter manuellement dans ma nouvelle installation XAMPP (7.0.1)
PHP7 a quelques modules désactivés par défaut qui étaient précédemment activés dans PHP5.
C'est une solution facile car l'extension doit déjà exister dans le dossier \ext\
fourni avec PHP7. Il vous suffit de modifier votre fichier php.ini
pour inclure la ligne:
extension=php_odbc.dll
La ligne ci-dessus est not déjà présente et mise en commentaire; vous devez en fait l'ajouter!
PHP cherche le fichier php.ini
dans C:\Windows\
mais il peut également se trouver ailleurs sur votre ordinateur. Vérifiez donc C:\Windows\
et C:\php\
ou à un autre endroit où vous avez installé PHP.
Après avoir effectué le changement, vous pouvez vérifier les résultats à partir de la ligne de commande comme suit:
C:\php\php.exe -m
ou (après avoir redémarré le serveur Web/la machine) à partir d'un fichier .phtml
comme ceci:
<? phpinfo(); ?>
Cela produira une liste de modules activés qui devraient maintenant inclure odbc; sinon, vous avez peut-être modifié le mauvais fichier php.ini
(continuez à chercher) ou oublié de redémarrer le serveur Web/la machine.
Si vous avez une installation non standard, vous pouvez utiliser un chemin absolu comme ceci:
extension=C:\php7x64\ext\php_odbc.dll
extension = php_mssql.dll (ou extension = php_sqlsrv_56_nts.dll si vous le recevez à partir des pilotes Microsoft pour PHP), est votre problème: le pilote Microsoft SQL pour PHP 7 n'est pas encore prêt, le dernier ETA date de janvier la beta.
Il semble que la raison du retard réside dans l'intention d'inclure SQL 2016 dans ce pilote afin que vous puissiez migrer plus facilement à l'avenir.
MISE À JOUR (12/02/2016):
Comme indiqué par ici (réponse de meet-bhagdev), un "aperçu technique préliminaire" du pilote PHP sqlsrv pour Windows est disponible sur github .
Ouvrez votre fichier php.ini et supprimez les commentaires ou ajoutez les lignes suivantes:
extension_dir = "C:\PHP\ext" ;<- your PHP path
extension=php_pdo_odbc.dll
extension=php_odbc.dll
Réinitialiser Internet Information Services:
iisreset
Cela a résolu le problème pour moi.
En plus de Adrian B`s qui mentionne le pilote officiel, vous pouvez également vérifier https://github.com/thomsonreuters/msphpsql Ceci est un portage non officiel. Cependant, il y a des limites pour le moment.
Nous avons besoin du pilote x86 de Microsoft . http://www.Microsoft.com/ja-jp/download/details.aspx?id=13255 * Désolé, 'ja-jp' est à moi . S'il vous plaît sélectionnez votre pays. Il y a 2 pilotes, l'un est 32 bits, mais nous avons besoin de la version 64 bits (x86) . Nous pourrions ensuite définir "Source de données ODBC (64 bits)". Il apparaît sur la fenêtre . Enfin, vérifiez votre site Web. Peut-être que ça marche .. Mar. Le 29 2016 Naio
Je suppose que vous aviez raison, vous devez télécharger le pilote SQL Server ODBC pour votre plate-forme client PHP et votre système d'exploitation.
Voici le lien pour le même problème: Appel de la fonction indéfinie odbc_connect ()
vous pouvez aussi essayer d'installer ce connecteur pour MySQL (si vous utilisez MySQL): Connector/ODBC
ou si vous utilisez MSSQL: ODBC Pilote 11 pour SQL Server