Включить расширение PHP (php_odbc.dll) в Azure

Я начал работать с Azure и тестировать подключение к базе данных Microsoft SQL. Я хотел бы использовать наше текущее расширение php_odbc.dll вместо использования подхода PDO.

  $query = "SELECT * FROM TABLE ";          
  //perform the query 
  $result=odbc_exec($conn, $query); 

Я выполнил шаги по добавлению расширения, настроив его с помощью настроек приложения и настроив с помощью параметров ini. Оба способа приводят к тому, что моя главная индексная страница выдает ошибку 500. Мой основной index.php включает только phpinfo(); функция для тестирования.

https://docs.microsoft.com/bs-latn-ba/azure/app-service/web-sites-php-configure#configure-via-app-setting

Вопрос. Как включить расширение php_odbc.dll в Azure? Версия PHP 7.3.


person Nick Kester    schedule 17.01.2020    source источник
comment
Видите ли вы какие-либо ошибки в журналах приложений в папке D:\home\LogFiles? Кроме того, dll должна быть не потокобезопасной, совместимой с VC9 или VC11 версией PHP для Windows.   -  person Gaurav Kumar    schedule 18.01.2020


Ответы (1)


Я вижу, что вы использовали Azure WebApp для Windows для развертывания своего PHP-приложения с подключением к базе данных SQL Azure с помощью php_odbc.dll.

Насколько мне известно, в Azure WebApp для Windows было установлено несколько версий среды выполнения PHP со многими расширениями, в том числе PHP 7.3, который находится по пути D:\Program Files (x86)\PHP, как показано на рисунке ниже, и я проверил php_odbc.dll, существует ли он через консоль Kudo https://<your webapp name>.scm.azurewebsites.net/DebugConsole

введите здесь описание изображения

Затем я перешел к v7.3, чтобы просмотреть файл php.ini, чтобы проверить, включено ли расширение php_odbc.dll.

введите здесь описание изображения

введите здесь описание изображения

Как видно из рисунка выше, в php.ini не объявлено php_odbc, поэтому по умолчанию оно не включено. И Azure регулирует все файлы и каталоги в D:\ (кроме D:\home), которые не могут быть изменены клиентами, поэтому попытка изменить php.ini, чтобы включить php_odbc, вызовет ошибку.

введите здесь описание изображения

Таким образом, решение состоит в том, чтобы обратиться к разделу How to: Enable extensions in the default PHP runtime официального документа Configure PHP in Azure App Service, как показано на рисунке ниже, чтобы включить существующее расширение по умолчанию.

введите здесь описание изображения

По умолчанию в пути D:\home\site может отсутствовать каталог с именем ini, который необходимо создать самостоятельно, а затем создать под ним файл с именем extensions.ini и отредактировать его, добавив имя расширения или абсолютный путь php_odbc.

; Enable Extensions
extension=php_odbc
; Or use its absoluted path, such as for 32bit platform
; extension=D:\Program Files (x86)\PHP\v7.3\ext\php_odbc.dll

После перезапуска веб-приложения Azure вы можете снова попробовать свою страницу PHP.

person Peter Pan    schedule 20.01.2020
comment
Это сработало отлично. Спасибо. Мне пришлось изменить мой ini-файл с правильным расширением; расширение = php_odbc - person Nick Kester; 20.01.2020
comment
@NickKester Рад это слышать. Не могли бы вы отметить мой ответ? Спасибо! - person Peter Pan; 21.01.2020