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

Здесь и в вопросах и ответах AWS четко заявляет, что можно подключиться к серверу 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];
?>

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

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

Другие вопросы по тегам