Как подключить AWS ELB к RDS под управлением MS SQL?

AWS четко заявляет Вот и в Q& что можно подключиться к серверу MS SQL, используя экземпляр PHP на Elastic Beanstalk.

Тем не менее, похоже, нет способа установить драйверы MSSQL.

Например, установка yum php-mssql из командной строки ELB генерирует ошибки, утверждающие, что версии необходимых зависимостей слишком высоки.

Вот классическое сообщение об ошибке:

—> Выполнение проверки транзакции
—> Будет установлен пакет php-common.x86_64 0: 5.3.29-1.8.amzn1
—> Конфликт обработки: php54-common-5.4.45-1.75.amzn1.x86_64 конфликты php-common < 5.4.45-1.75.amzn1
—> Конфликт обработки: php54-pdo-5.4.45-1.75.amzn1.x86_64 конфликты php-pdo < 5.4.45-1.75.amzn1
—> Законченное разрешение зависимостей
Ошибка: php54-pdo конфликтует с php-pdo-5.3.29-1.8.amzn1.x86_64
Ошибка: php54-common конфликтует с php-common-5.3.29-1.8.amzn1.x86_64

Вы можете попробовать использовать —skip-broken, чтобы обойти проблему
Вы можете попробовать запустить: rpm -Va —nofiles —nodigest

Так как же подключиться к MS-SQL с помощью PHP на AWS ELB?

1

Решение

Решение состоит в том, чтобы выбрать Amazon Linux версия 5.3 при создании вашего приложения beanstalk.

После выбора PHP на Тип среды Экран, следующая строка говорит:

AWS Elastic Beanstalk создаст среду с PHP 5.6 на 64-битной версии Amazon Linux 2015.09 v2.0.8. Изменить версию платформы.

Нажмите на ссылку Изменить версию платформы и вам будет предоставлен раскрывающийся список возможных версий.

Версии AWS PHP для Linux

Единственная версия, которая работает, — последняя в списке: 5.3 на 64-битной Amazon Linux (Я не пробовал 32-битную, но, вероятно, это тоже работает.)

Затем создайте 01.config файл, который находится в .ebextensions папку и убедитесь, что она включает в себя:

packages:
yum:
php-mssql: []

Осторожно: в этом файле учитывается отступ.

Теперь вы можете использовать такой код для подключения:

<?php
// connect to database server
$db_conn = mssql_connect("your.rds.amazonaws.com","user","passw0rd")
or die( "<strong>ERROR: Connection to MYSERVER failed</strong>" );

// select database - only if we want to query another database than the default one
mssql_select_db( "database1", $db_conn )
or die( "<strong>ERROR: Selecting database failed</strong>" );

// query the database
$query_result = mssql_query( "SELECT * FROM table1", $db_conn )
or die( "<strong>ERROR: Query failed</strong>" );
$row = mssql_fetch_array($query_result);
echo $row[0];
?>

Теперь все работает как положено.

Это результат двухдневной работы, которую вы поделились здесь, так как эта информация, кажется, нигде не существует.

1

Другие решения

Других решений пока нет …