2017-10-12 7 views
0

J'ai Apache 2.4 et PHP 7 installé et fonctionne bien sur une AMI Amazon Linux sur AWS. De PHP, je peux très bien me connecter aux bases de données MySQL, mais maintenant je dois me connecter à une base de données SQL Server.Comment me connecter à une instance SQL Server à partir de PHP 7 sur une instance AWS Amazon Linux EC2?

Comment faire? Quel est le code PHP dont j'ai besoin pour écrire et dois-je installer des paquets/modules PHP supplémentaires pour cela? Je l'ai déjà PDO installé et essayé de l'utiliser, mais le code suivant provoque l'erreur suivante:

$dsn = 'sqlsrv:dbname=db-name;host=aws-endpoint.rds.amazonaws.com'; 
$user = 'user-name'; 
$password = 'password'; 
$dbh = new PDO($dsn, $user, $password); 

Erreur:

PHP Fatal error: Uncaught PDOException: could not find driver in /var/www/html/php-script-name.php 

Modifier: Ajouter à ma question un peu, J'ai couru un yum search pdo à partir de l'instance EC2 et j'ai obtenu ce qui suit:

Loaded plugins: priorities, update-motd, upgrade-helper 
============================================================================================================= N/S matched: pdo ============================================================================================================== 
php-ZendFramework-Db-Adapter-Pdo.noarch : Zend Framework database adapter for PDO 
php-ZendFramework-Db-Adapter-Pdo-Mssql.noarch : Zend Framework database adapter for MS SQL PDO 
php-ZendFramework-Db-Adapter-Pdo-Mysql.noarch : Zend Framework database adapter for MySQL PDO 
php-ZendFramework-Db-Adapter-Pdo-Pgsql.noarch : Zend Framework database adapter for PgSQL PDO 
php70-pdo-dblib.x86_64 : PDO driver Microsoft SQL Server and Sybase databases 
php71-pdo-dblib.x86_64 : PDO driver Microsoft SQL Server and Sybase databases 
php-pdo.x86_64 : A database access abstraction module for PHP applications 
php54-pdo.x86_64 : A database access abstraction module for PHP applications 
php55-pdo.x86_64 : A database access abstraction module for PHP applications 
php56-pdo.x86_64 : A database access abstraction module for PHP applications 
php70-pdo.x86_64 : A database access abstraction module for PHP applications 
php71-pdo.x86_64 : A database access abstraction module for PHP applications 

    Name and summary matches only, use "search all" for everything. 

Il semble que php70-pdo-dblib.x86_64 est le plugin que je veux, alors j'ai couru yum install dessus et mon phpinfo ressemble maintenant à ce qui suit:

enter image description here

Je ne Relancez Apache aussi bien, mais je reçois toujours l'erreur mentionné ci-dessus avec le code noté ci-dessus. En tant que tel, je ne pense pas qu'il s'agisse d'un doublon de la question liée dans la section des commentaires.

+0

Copie possible de [PDOException "Impossible de trouver le pilote"] (https://stackoverflow.com/questions/2852748/pdoexception-could-not-find-driver) – miken32

Répondre

0

I figured it out. Vous devez en fait avoir php70-pdo-dblib installé et redémarrez le serveur. Cependant, ma chaîne $ dbn était désactivée. Plus précisément, sqlsrv devait être changé en dblib et j'ai ajouté le numéro de port :1433 sur la fin de la partie host.

En tant que tel, le code suivant travaillé:

$dsn = 'dblib:host=aws-endpoint.rds.amazonaws.com:1433;dbname=db-name;'; 
$user = 'user-name'; 
$password = 'password'; 

try { 

    $dbh = new PDO($dsn, $user, $password); 

    $result = $dbh->query("SELECT * 
    FROM table-name;"); 

    foreach ($result as $row) { 
    echo '<pre>'; 
     print_r($row); 
    echo '</pre>'; 
    } 

} catch (PDOException $e) { 

    echo 'Connection failed: ' . $e->getMessage(); 

} 
0

Vous devez installer le pilote Microsoft SQL PHP.

Suivez les instructions sur cette page:

MSPHPSQL