Бөлісу құралы:


Руководство по установке Linux и macOS для драйверов Майкрософт для PHP для SQL Server

В следующих инструкциях предполагается чистая среда и показано, как установить PHP 8.3, драйвер Microsoft ODBC, веб-сервер Apache и драйверы Майкрософт для PHP для SQL Server в Ubuntu, Red Hat, Debian, SUSE, Alpine и macOS. Эти инструкции советуют устанавливать драйверы с помощью PECL. Вы также можете скачать предварительно созданные двоичные файлы на странице проекта Microsoft Drivers for PHP для SQL Server GitHub и установить их, выполнив инструкции по загрузке драйверов Майкрософт для PHP для SQL Server. Описание загрузки расширений и почему мы не добавляем расширения в php.ini, см. в разделе о загрузке драйверов.

Следующие инструкции по умолчанию устанавливают PHP 8.3, используя pecl install, если пакеты PHP 8.3 доступны. Возможно, сначала потребуется выполнить команду pecl channel-update pecl.php.net . Некоторые поддерживаемые дистрибутивы Linux по умолчанию используют старые версии PHP, которые не поддерживаются для последней версии драйверов PHP для SQL Server. Чтобы установить PHP 8.4 или 8.5, см. заметки в начале каждого раздела.

Также приведены инструкции по установке диспетчера процессов PHP FastCGI, PHP-FPM в Ubuntu. PHP-FPM требуется, если вы используете веб-сервер nginx вместо Apache.

Хотя эти инструкции содержат команды для установки sqlSRV и PDO_SQLSRV драйверов, драйверы могут быть установлены и функционировать независимо. Пользователи, которые уверенно настраивают свою конфигурацию, могут адаптировать эти инструкции так, чтобы они подходили для SQLSRV или PDO_SQLSRV. Оба драйвера имеют одинаковые зависимости, за исключением отмеченных.

Последние поддерживаемые версии операционных систем см. в таблице поддержки.

Замечание

Установите последнюю версию драйвера ODBC, чтобы обеспечить оптимальную производительность и безопасность. Инструкции по установке см. в разделе "Установка драйвера Microsoft ODBC для SQL Server (Linux) или установка драйвера Microsoft ODBC для SQL Server(macOS)".

Установка в Ubuntu

Замечание

Чтобы установить PHP 8.4 или 8.5, замените 8.3 на 8.4 или 8.5 в следующих командах.

Шаг 1. Установка PHP (Ubuntu)

sudo su
add-apt-repository ppa:ondrej/php -y
apt-get update
apt-get install php8.3 php8.3-dev php8.3-xml -y --allow-unauthenticated

Шаг 2. Установка необходимых компонентов (Ubuntu)

Установите драйвер ODBC для Ubuntu, следуя инструкциям по установке драйвера Microsoft ODBC для SQL Server (Linux). Не забудьте также установить unixodbc-dev пакет. Она используется командой pecl для установки драйверов PHP.

sudo apt-get install unixodbc-dev

Шаг 3. Установка драйверов PHP для Microsoft SQL Server (Ubuntu)

sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
sudo su
printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/8.3/mods-available/sqlsrv.ini
printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.3/mods-available/pdo_sqlsrv.ini
exit
sudo phpenmod -v 8.3 sqlsrv pdo_sqlsrv

Если в системе существует только одна версия PHP, последний шаг можно упростить phpenmod sqlsrv pdo_sqlsrv.

Шаг 4. Установка Apache и настройка загрузки драйверов (Ubuntu)

sudo su
apt-get install libapache2-mod-php8.3 apache2
a2dismod mpm_event
a2enmod mpm_prefork
a2enmod php8.3
exit

Шаг 5. Перезапустите Apache и проверьте пример скрипта (Ubuntu)

sudo service apache2 restart

Чтобы проверить установку, ознакомьтесь с разделом "Тестирование установки " в конце этого документа.

Установка в Ubuntu с помощью PHP-FPM

Замечание

Чтобы установить PHP 8.4 или 8.5, замените 8.3 на 8.4 или 8.5 в следующих командах.

Шаг 1. Установка PHP (Ubuntu с PHP-FPM)

sudo su
add-apt-repository ppa:ondrej/php -y
apt-get update
apt-get install php8.3 php8.3-dev php8.3-fpm php8.3-xml -y --allow-unauthenticated

Проверьте состояние службы PHP-FPM, выполнив следующую команду:

systemctl status php8.3-fpm

Шаг 2. Установка необходимых компонентов (Ubuntu с PHP-FPM)

Установите драйвер ODBC для Ubuntu, следуя инструкциям по установке драйвера Microsoft ODBC для SQL Server (Linux). Не забудьте также установить unixodbc-dev пакет. Она используется командой pecl для установки драйверов PHP.

Шаг 3. Установка драйверов PHP для Microsoft SQL Server (Ubuntu с PHP-FPM)

sudo pecl config-set php_ini /etc/php/8.3/fpm/php.ini
sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
sudo su
printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/8.3/mods-available/sqlsrv.ini
printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.3/mods-available/pdo_sqlsrv.ini
exit
sudo phpenmod -v 8.3 sqlsrv pdo_sqlsrv

Если в системе существует только одна версия PHP, последний шаг можно упростить phpenmod sqlsrv pdo_sqlsrv.

Убедитесь, что sqlsrv.ini и pdo_sqlsrv.ini находятся в /etc/php/8.3/fpm/conf.d/:

ls /etc/php/8.3/fpm/conf.d/*sqlsrv.ini

Перезапустите службу PHP-FPM:

sudo systemctl restart php8.3-fpm

Шаг 4. Установка и настройка nginx (Ubuntu с PHP-FPM)

sudo apt-get update
sudo apt-get install nginx
sudo systemctl status nginx

Чтобы настроить nginx, необходимо изменить /etc/nginx/sites-available/default файл. Добавьте index.php в список под разделом с надписью # Add index.php to the list if you are using PHP:

# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html index.php;

Раскомментируйте и измените раздел, следующий после # pass PHP scripts to FastCGI server, следующим образом:

# pass PHP scripts to FastCGI server
#
location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}

Шаг 5. Перезапустите nginx и проверьте пример скрипта (Ubuntu с PHP-FPM)

sudo systemctl restart nginx.service

Чтобы проверить установку, ознакомьтесь с разделом "Тестирование установки " в конце этого документа.

Установка в Red Hat

Шаг 1. Установка PHP (Red Hat)

Чтобы установить PHP в Red Hat 8, выполните следующие команды:

Замечание

Чтобы установить PHP 8.4 или 8.5, замените remi-8.3 на remi-8.4 или remi-8.5 соответственно в следующих командах.

sudo su
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
dnf install yum-utils
dnf module reset php
dnf module install php:remi-8.3
subscription-manager repos --enable codeready-builder-for-rhel-8-x86_64-rpms
dnf update
# Note: The php-pdo package is required only for the PDO_SQLSRV driver
dnf install php-pdo php-pear php-devel

Шаг 2. Установка необходимых компонентов (Red Hat)

Установите драйвер ODBC для Red Hat 8, следуя инструкциям по установке драйвера Microsoft ODBC для SQL Server (Linux). Не забудьте также установить unixodbc-dev пакет. Она используется командой pecl для установки драйверов PHP.

Шаг 3. Установка драйверов PHP для Microsoft SQL Server (Red Hat)

sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
sudo su
echo extension=pdo_sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/30-pdo_sqlsrv.ini
echo extension=sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/20-sqlsrv.ini
exit

Можно также установить из репозитория Remi:

sudo yum install php-sqlsrv

Шаг 4. Установка Apache (Red Hat)

sudo yum install httpd

SELinux устанавливается по умолчанию и работает в режиме принудительного выполнения. Чтобы разрешить Apache подключаться к базам данных через SELinux, выполните следующую команду:

sudo setsebool -P httpd_can_network_connect_db 1

Шаг 5. Перезапустите Apache и проверьте пример скрипта (Red Hat)

sudo apachectl restart

Чтобы проверить установку, ознакомьтесь с разделом "Тестирование установки " в конце этого документа.

Установка в Debian

Замечание

Чтобы установить PHP 8.4 или 8.5, замените 8.3 в следующих командах 8.4 или 8.5.

Шаг 1. Установка PHP (Debian)

sudo su
apt-get install curl apt-transport-https
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list
apt-get update
apt-get install -y php8.3 php8.3-dev php8.3-xml php8.3-intl

Шаг 2. Установка необходимых компонентов (Debian)

Установите драйвер ODBC для Debian, следуя инструкциям по установке драйвера Microsoft ODBC для SQL Server (Linux). Не забудьте также установить unixodbc-dev пакет. Она используется командой pecl для установки драйверов PHP.

Для того чтобы выходные данные PHP правильно отображались в браузере, может потребоваться создать правильную локализацию. Например, для языкового стандарта UTF-8 en_US выполните следующие команды:

sudo su
sed -i 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/g' /etc/locale.gen
locale-gen

Возможно, вам потребуется добавить /usr/sbin в файл $PATH, так как исполняемый locale-gen файл находится там.

Шаг 3. Установка драйверов PHP для Microsoft SQL Server (Debian)

sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
sudo su
printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/8.3/mods-available/sqlsrv.ini
printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.3/mods-available/pdo_sqlsrv.ini
exit
sudo phpenmod -v 8.3 sqlsrv pdo_sqlsrv

Если в системе существует только одна версия PHP, последний шаг можно упростить phpenmod sqlsrv pdo_sqlsrv. Как и locale-gen, phpenmod находится в /usr/sbin, и вам может понадобиться добавить этот каталог в ваш $PATH.

Шаг 4. Установка Apache и настройка загрузки драйверов (Debian)

sudo su
apt-get install libapache2-mod-php8.3 apache2
a2dismod mpm_event
a2enmod mpm_prefork
a2enmod php8.3

Шаг 5. Перезапустите Apache и проверьте пример скрипта (Debian)

sudo service apache2 restart

Чтобы проверить установку, ознакомьтесь с разделом "Тестирование установки " в конце этого документа.

Установка в SUSE

Замечание

В следующих инструкциях замените <SuseVersion> на свою версию SUSE — если вы используете SUSE Linux Enterprise Server 15, это SLE_15_SP3 или SLE_15_SP4 (или более поздние версии). Не все версии PHP доступны для всех версий SUSE Linux. См. сведения http://download.opensuse.org/repositories/devel:/languages:/php, чтобы узнать, какая версия PHP установлена по умолчанию для версий SUSE, или проверьте http://download.opensuse.org/repositories/devel:/languages:/php:/, чтобы узнать, какие другие версии PHP доступны для различных версий SUSE.

Шаг 1. Установка PHP (SUSE)

sudo su
zypper -n ar -f https://download.opensuse.org/repositories/devel:languages:php/<SuseVersion>/devel:languages:php.repo
zypper --gpg-auto-import-keys refresh
zypper -n install php8 php8-pdo php8-devel php8-openssl

Шаг 2. Установка необходимых компонентов (SUSE)

Установите драйвер ODBC для SUSE, следуя инструкциям по установке драйвера Microsoft ODBC для SQL Server (Linux). Не забудьте также установить unixodbc-dev пакет. Она используется командой pecl для установки драйверов PHP.

Шаг 3. Установка драйверов PHP для Microsoft SQL Server (SUSE)

sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
sudo su
echo extension=pdo_sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/pdo_sqlsrv.ini
echo extension=sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/sqlsrv.ini
exit

Шаг 4. Установка Apache и настройка загрузки драйверов (SUSE)

sudo su
zypper install apache2 apache2-mod_php8
a2enmod php8
echo "extension=sqlsrv.so" >> /etc/php8/apache2/php.ini
echo "extension=pdo_sqlsrv.so" >> /etc/php8/apache2/php.ini
exit

Шаг 5. Перезапустите Apache и проверьте пример скрипта (SUSE)

sudo systemctl restart apache2

Чтобы проверить установку, ознакомьтесь с разделом "Тестирование установки " в конце этого документа.

Установка в Alpine

Замечание

PHP 8.3 или более поздняя версия может быть доступна из тестовых или edge-репозиториев для Alpine. Вместо этого можно скомпилировать PHP из источника.

Шаг 1. Установка PHP (Alpine)

Пакеты PHP для Alpine можно найти в репозитории edge/community . Проверьте включение репозитория сообщества на их вики-странице. Добавьте следующую строку в /etc/apk/repositories, заменив <mirror> на URL-адрес зеркала репозитория Alpine.

http://<mirror>/alpine/edge/community

Затем запустите:

sudo su
apk update
# Note: The php*-pdo package is required only for the PDO_SQLSRV driver
# For PHP 8.*
apk add php8 php8-dev php8-pear php8-pdo php8-openssl autoconf make g++
# The following symbolic links are optional but useful
ln -s /usr/bin/php8 /usr/bin/php
ln -s /usr/bin/phpize8 /usr/bin/phpize
ln -s /usr/bin/pecl8 /usr/bin/pecl
ln -s /usr/bin/php-config8 /usr/bin/php-config

Шаг 2. Установка необходимых компонентов (Alpine)

Установите драйвер ODBC для Alpine, следуя инструкциям по установке драйвера Microsoft ODBC для SQL Server (Linux). Обязательно установите unixodbc-dev пакет (sudo apk add unixodbc-dev). Она используется командой pecl для установки драйверов PHP.

Шаг 3. Установка драйверов PHP для Microsoft SQL Server (Alpine)

sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
sudo su
echo extension=pdo_sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/10_pdo_sqlsrv.ini
echo extension=sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/20_sqlsrv.ini

Шаг 4. Установка Apache и настройка загрузки драйверов (Alpine)

# For PHP 8.*
sudo apk add php8-apache2 apache2

Шаг 5. Перезапустите Apache и проверьте пример скрипта (Alpine)

sudo rc-service apache2 restart

Чтобы проверить установку, ознакомьтесь с разделом "Тестирование установки " в конце этого документа.

Установка в macOS

Если у вас еще нет Homebrew, установите его следующим образом:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Замечание

Чтобы установить PHP 8.4 или 8.5, замените php@8.3 на php@8.4 или php@8.5 соответственно в следующих командах.

Шаг 1. Установка PHP (macOS)

brew tap
brew tap homebrew/core
brew install php@8.3

Теперь PHP должен находиться в системном пути. Запустите php -v , чтобы убедиться, что вы используете правильную версию PHP. Если PHP не указан в пути или он не является правильной версией, выполните следующие команды:

brew link --force --overwrite php@8.3

При использовании Apple M1 ARM64 может потребоваться задать путь:

export PATH="/opt/homebrew/bin:$PATH"

Шаг 2. Установка необходимых компонентов (macOS)

Установите драйвер ODBC для macOS, следуя инструкциям по установке драйвера Microsoft ODBC для SQL Server (macOS).

Замечание

При использовании оборудования Apple M1 ARM64 установите драйвер Microsoft ODBC 17.8+ напрямую без использования эмулятора Rosetta 2.

Кроме того, может потребоваться установить средства GNU make:

brew install autoconf automake libtool

Шаг 3. Установка драйверов PHP для Microsoft SQL Server (macOS)

sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv

При использовании Apple M1 ARM64 сделайте следующее:

sudo CXXFLAGS="-I/opt/homebrew/opt/unixodbc/include/" LDFLAGS="-L/opt/homebrew/lib/" pecl install sqlsrv
sudo CXXFLAGS="-I/opt/homebrew/opt/unixodbc/include/" LDFLAGS="-L/opt/homebrew/lib/" pecl install pdo_sqlsrv

Шаг 4. Установка Apache и настройка загрузки драйверов (macOS)

Замечание

По состоянию на версию 11.0 Big Sur macOS поставляется с предварительно установленным Apache 2.4, но Apple удалила некоторые необходимые сценарии. Решение — установить Apache 2.4 через Homebrew и настроить его. Этот шаг выходит за рамки этого руководства по установке. Подробные инструкции см. в Apache или Homebrew.

brew install apache2

Чтобы найти файл конфигурации Apache для вашей установки, выполните следующую команду: httpd.conf

/usr/local/bin/apachectl -V | grep SERVER_CONFIG_FILE

Следующие команды добавляют необходимую конфигурацию в httpd.conf. Не забудьте заменить путь, возвращенный предыдущей командой вместо /usr/local/etc/httpd/httpd.conf:

echo "LoadModule php7_module /usr/local/opt/php@8.3/lib/httpd/modules/libphp7.so" >> /usr/local/etc/httpd/httpd.conf
(echo "<FilesMatch .php$>"; echo "SetHandler application/x-httpd-php"; echo "</FilesMatch>";) >> /usr/local/etc/httpd/httpd.conf

Шаг 5. Перезапустите Apache и проверьте пример скрипта (macOS)

sudo apachectl restart

Чтобы проверить установку, ознакомьтесь с разделом "Тестирование установки " в конце этого документа.

Тестирование установки

Чтобы протестировать этот пример скрипта, создайте файл с именем testsql.php в корневом каталоге документа системы. Этот путь - /var/www/html/ в Ubuntu, Debian и Red Hat, /srv/www/htdocs в SUSE, /var/www/localhost/htdocs в Alpine или /usr/local/var/www в macOS. Скопируйте следующий скрипт в него, заменив сервер, базу данных, имя пользователя и пароль соответствующим образом.

Пример SQLSRV

<?php
$serverName = "yourServername";
$connectionOptions = array(
    "database" => "yourDatabase",
    "uid" => "yourUsername",
    "pwd" => "yourPassword"
);

function exception_handler($exception) {
    echo "<h1>Failure</h1>";
    echo "Uncaught exception: " , $exception->getMessage();
    echo "<h1>PHP Info for troubleshooting</h1>";
    phpinfo();
}

set_exception_handler('exception_handler');

// Establishes the connection
$conn = sqlsrv_connect($serverName, $connectionOptions);
if ($conn === false) {
    die(formatErrors(sqlsrv_errors()));
}

// Select Query
$tsql = "SELECT @@Version AS SQL_VERSION";

// Executes the query
$stmt = sqlsrv_query($conn, $tsql);

// Error handling
if ($stmt === false) {
    die(formatErrors(sqlsrv_errors()));
}
?>

<h1> Success Results : </h1>

<?php
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
    echo $row['SQL_VERSION'] . PHP_EOL;
}

sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);

function formatErrors($errors)
{
    // Display errors
    echo "<h1>SQL Error:</h1>";
    echo "Error information: <br/>";
    foreach ($errors as $error) {
        echo "SQLSTATE: ". $error['SQLSTATE'] . "<br/>";
        echo "Code: ". $error['code'] . "<br/>";
        echo "Message: ". $error['message'] . "<br/>";
    }
}
?>

Пример PDO_SQLSRV

<?php
try {
    $serverName = "yourServername";
    $databaseName = "yourDatabase";
    $uid = "yourUsername";
    $pwd = "yourPassword";
    
    $conn = new PDO("sqlsrv:server = $serverName; Database = $databaseName;", $uid, $pwd);

    // Select Query
    $tsql = "SELECT @@Version AS SQL_VERSION";

    // Executes the query
    $stmt = $conn->query($tsql);
} catch (PDOException $exception1) {
    echo "<h1>Caught PDO exception:</h1>";
    echo $exception1->getMessage() . PHP_EOL;
    echo "<h1>PHP Info for troubleshooting</h1>";
    phpinfo();
}

?>

<h1> Success Results : </h1>

<?php
try {
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        echo $row['SQL_VERSION'] . PHP_EOL;
    }
} catch (PDOException $exception2) {
    // Display errors
    echo "<h1>Caught PDO exception:</h1>";
    echo $exception2->getMessage() . PHP_EOL;
}

unset($stmt);
unset($conn);
?>

Укажите браузер https://localhost/testsql.php (https://localhost:8080/testsql.php в macOS). Теперь вы сможете подключиться к базе данных SQL Server или Azure SQL. Если вы не видите сообщение об успешном выполнении, отображающее сведения о версии SQL, можно выполнить некоторые основные способы устранения неполадок, выполнив скрипт из командной строки:

php testsql.php

Если выполнение из командной строки выполнено успешно, но ничего не отображается в браузере, проверьте файлы журнала Apache. Дополнительные сведения см. в разделе "Ресурсы поддержки " для перехода по местам.

См. также

Начало работы с драйверами Майкрософт для PHP для SQL Server

Загрузка драйверов Майкрософт для PHP для SQL Server

Требования к системе для драйверов Майкрософт для PHP для SQL Server