Установка драйвера pdo_sqlsrv в PHP 7.4 с использованием CentOS 8

#php #sql-server #pdo #centos #centos8

#php #sql-сервер #pdo #centos #centos8

Вопрос:

Я успешно установил php 7.4 с пакетами Remi на свой CentOS 8 VPS (использовал это руководство https://www.digitalocean.com/community/tutorials/how-to-run-multiple-php-versions-on-one-server-using-apache-and-php-fpm-on-centos-8)

У меня есть виртуальный хост на моем сервере Apache, который указывает на мой домен и загружает требуемую версию php для этой среды.

 <VirtualHost *:80>
    ServerName www.example.net
    ServerAlias example.net
    DocumentRoot /var/www/example.net/html
    ErrorLog /var/www/example.net/log/error.log
    CustomLog /var/www/example.net/log/requests.log combined
  <IfModule !mod_php7.c>
    <FilesMatch .(php|phar)$>
        SetHandler "proxy:unix:/var/opt/remi/php74/run/php-fpm/www.sock|fcgi://localhost"
    </FilesMatch>
  </IfModule>
</VirtualHost>
  

Как включить расширение pdo_sqlsrv для установки php 7.4 с помощью Remi?

Я следовал этому руководству: https://learn.microsoft.com/en-us/sql/connect/php/installation-tutorial-linux-mac?view=sql-server-ver15#installing-the-drivers-on-red-hat-7-and-8 но я думаю, что что-то пошло не так.

Если я это сделаю <?php echo phpinfo(); ?> , я увижу, что модули не загружаются https://gyazo.com/d5a30969f06c49e78bf3473a07776492

Также, если я проверю версию PHP с помощью php -v , это результат:

 PHP Warning:  Module 'sqlsrv' already loaded in Unknown on line 0
PHP Warning:  Module 'pdo_sqlsrv' already loaded in Unknown on line 0
PHP 7.4.12 (cli) (built: Oct 27 2020 15:01:52) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
  

Редактировать:

Я также проверил с помощью этой команды yum list installed | grep php

и у меня есть следующий вывод. Обратите внимание на php-pdo от remi.

 php-json.x86_64                     7.4.12-1.el8.remi                          @remi-modular
php-pdo.x86_64                      7.4.12-1.el8.remi                          @remi-modular
php-sqlsrv.x86_64                   5.8.1-1.el8.remi.7.4                       @remi-modular
php74.x86_64                        1.0-3.el8.remi                             @remi-safe
php74-php-cli.x86_64                7.4.12-1.el8.remi                          @remi-safe
php74-php-common.x86_64             7.4.12-1.el8.remi                          @remi-safe
php74-php-fpm.x86_64                7.4.12-1.el8.remi                          @remi-safe
php74-php-json.x86_64               7.4.12-1.el8.remi                          @remi-safe
php74-runtime.x86_64                1.0-3.el8.remi                             @```
  

Комментарии:

1. он у вас есть на шаге 3, но убедитесь, что вы используете правильный ini-файл. Кроме того, если вы используете fpt, вам может потребоваться перезапустить службу php, чтобы изменения вступили в силу.

2. Похоже, для меня вы не добавили модули в свой php.ini . проверьте файл PHP (что важно, который использует Apache), и я подозреваю, что вы заметите, что они отсутствуют.

3. Я попытался добавить extension=pdo_sqlsrv.so в загружаемый Php.ini, но все равно ничего не меняется.

4. Обратите внимание как на себя, так и на @JulienB. Есть подозрение, что вы добавили его не в правильный. Я подозреваю, что вы добавили его в php.ini файл, только не тот, который использует Apache.

5. Это тот, который я добавляю gyazo.com/13d70786f38653136e732f3cf60e458d

Ответ №1:

Как включить расширение pdo_sqlsrv для установки php 7.4 с помощью Remi? php-sqlsrv.x86_64 5.8.1-1.el8.remi.7.4 @remi-модульный php74-php-fpm.x86_64 7.4.12-1.el8.remi @remi-безопасный

Вы перепутали php- * (единственную версию / версию по умолчанию) и php74- * (предназначен для установки нескольких версий). Прочитайте FAQ по репозиторию

Для правильной установки просто следуйте инструкциям мастера.

Итак, если вы используете php-fpm, вам нужен php-sqlsrv (что является более простым способом, поэтому рекомендуется).

Если вы используете php74-php-fpm, вам нужен php74-php-sqlsrv.

 dnf remove php74*
dnf install php-fpm php-cli
  

Вам не нужно ничего создавать из исходного кода и не нужно изменять какой-либо INI-файл.