2017-10-12 15 views
0

AWSのAmazon Linux AMIにApache 2.4とPHP 7がインストールされ、正常に動作しています。 PHPからMySQLデータベースに接続することはできますが、SQL Server DBに接続する必要があります。方法AWS Amazon Linux EC2インスタンスのPHP 7からSQL Serverインスタンスに接続しますか?

どうすればよいですか?私が書く必要があるPHPコードは何ですか?これを行うには追加のPHPパッケージ/モジュールをインストールする必要がありますか?私はすでにPDOがインストールされており、それを使用しようとしましたが、次のコードは、次のエラーがスローされます。

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

エラー:

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

編集:私の質問ビットに加え、私はEC2のインスタンスからyum search pdoを実行し、以下を取得しました:

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. 

php70-pdo-dblib.x86_64は、私が欲しいのプラグインであるように思えるので、私はそれにyum installを走ったと私のphpinfoは現在、次のようになります

enter image description here

私もApacheの再起動でしたが、私はまだエラーが上記の取得上記のコードを使用してください。

このように、私はこれがコメントセクションにリンクされている質問と重複しているとは思わない。

+0

[PDOException "ドライバを見つけることができませんでした"](https://stackoverflow.com/questions/2852748/pdoexception-could-not-find-driver) – miken32

答えて

0

私はそれを考え出しました。実際にはphp70-pdo-dblibをインストールして、サーバーを再起動する必要があります。しかし、私の$ dbn文字列はオフになっていました。具体的には、sqlsrvdblibに変更する必要があり、ポート番号:1433host部分の末尾に追加しました。このように

、次のコードが働いた:

$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

Microsoft SQL PHPドライバをインストールする必要があります。

は、このページの指示に従ってください:

MSPHPSQL

0

あなたがRPMを構築し、それをインストールするには、こちらのページをご覧のunixODBCのインストールのポイントを取得するときMicrosoftからの公式ガイドに従ってください:

https://github.com/EreMaijala/unixODBC

関連する問題