Как подключить 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. Изменить версию платформы.
Нажмите на ссылку Изменить версию платформы, и вы получите список возможных версий.
Единственная работающая версия - последняя в списке: 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];
?>
Теперь все работает как положено.
Это результат двухдневной работы, которую вы поделились здесь, так как эта информация, кажется, нигде не существует.