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