Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
В следующих инструкциях предполагается чистая среда и показано, как установить PHP 8.1, драйвер 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.1 с использованием pecl install, если доступны пакеты PHP 8.1. Сначала, возможно, потребуется запустить pecl channel-update pecl.php.net. Некоторые поддерживаемые дистрибутивы Linux по умолчанию используют PHP 7.1 или более ранних версий, которые не поддерживаются для последней версии драйверов PHP для SQL Server. Обратите внимание на заметки в начале каждого раздела, чтобы установить PHP 8.2 или 8.3.
Также приведены инструкции по установке диспетчера процессов 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.2 или 8.3, замените 8.1 на 8.2 или 8.3 в следующих командах.
Шаг 1. Установка PHP (Ubuntu)
sudo su
add-apt-repository ppa:ondrej/php -y
apt-get update
apt-get install php8.1 php8.1-dev php8.1-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.1/mods-available/sqlsrv.ini
printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.1/mods-available/pdo_sqlsrv.ini
exit
sudo phpenmod -v 8.1 sqlsrv pdo_sqlsrv
Если в системе существует только одна версия PHP, последний шаг можно упростить phpenmod sqlsrv pdo_sqlsrv.
Шаг 4. Установка Apache и настройка загрузки драйверов (Ubuntu)
sudo su
apt-get install libapache2-mod-php8.1 apache2
a2dismod mpm_event
a2enmod mpm_prefork
a2enmod php8.1
exit
Шаг 5. Перезапустите Apache и проверьте пример скрипта (Ubuntu)
sudo service apache2 restart
Чтобы проверить установку, ознакомьтесь с разделом "Тестирование установки " в конце этого документа.
Установка в Ubuntu с помощью PHP-FPM
Замечание
Чтобы установить PHP 8.2 или 8.3, замените 8.1 на 8.2 или 8.3 в следующих командах.
Шаг 1. Установка PHP (Ubuntu с PHP-FPM)
sudo su
add-apt-repository ppa:ondrej/php -y
apt-get update
apt-get install php8.1 php8.1-dev php8.1-fpm php8.1-xml -y --allow-unauthenticated
Проверьте состояние службы PHP-FPM, выполнив следующую команду:
systemctl status php8.1-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.1/fpm/php.ini
sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
sudo su
printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/8.1/mods-available/sqlsrv.ini
printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.1/mods-available/pdo_sqlsrv.ini
exit
sudo phpenmod -v 8.1 sqlsrv pdo_sqlsrv
Если в системе существует только одна версия PHP, последний шаг можно упростить phpenmod sqlsrv pdo_sqlsrv.
Убедитесь, что sqlsrv.ini и pdo_sqlsrv.ini находятся в /etc/php/8.1/fpm/conf.d/:
ls /etc/php/8.1/fpm/conf.d/*sqlsrv.ini
Перезапустите службу PHP-FPM:
sudo systemctl restart php8.1-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.1-fpm.sock;
}
Шаг 5. Перезапустите nginx и проверьте пример скрипта (Ubuntu с PHP-FPM)
sudo systemctl restart nginx.service
Чтобы проверить установку, ознакомьтесь с разделом "Тестирование установки " в конце этого документа.
Установка в Red Hat
Шаг 1. Установка PHP (Red Hat)
Чтобы установить PHP в Red Hat 7, выполните следующие команды:
Замечание
Чтобы установить PHP 8.2 или 8.3, замените remi-php81 на remi-php82 или remi-php83 соответственно в следующих командах.
sudo su
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
subscription-manager repos --enable=rhel-7-server-optional-rpms
yum install yum-utils
yum-config-manager --enable remi-php81
yum update
# Note: The php-pdo package is required only for the PDO_SQLSRV driver
yum install php php-pdo php-pear php-devel
Чтобы установить PHP в Red Hat 8, выполните следующие команды:
Замечание
Чтобы установить PHP 8.2 или 8.3, замените remi-8.1 на remi-8.2 или remi-8.3 соответственно в следующих командах.
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.1
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 7 или 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.2 или 8.3, замените 8.1 на 8.2 или 8.3 в следующих командах.
Шаг 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.1 php8.1-dev php8.1-xml php8.1-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.1/mods-available/sqlsrv.ini
printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.1/mods-available/pdo_sqlsrv.ini
exit
sudo phpenmod -v 8.1 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.1 apache2
a2dismod mpm_event
a2enmod mpm_prefork
a2enmod php8.1
Шаг 5. Перезапустите Apache и проверьте пример скрипта (Debian)
sudo service apache2 restart
Чтобы проверить установку, ознакомьтесь с разделом "Тестирование установки " в конце этого документа.
Установка в SUSE
Замечание
В следующих инструкциях замените <SuseVersion> вашей версией SUSE — если вы используете SUSE Linux Enterprise Server 15, это будет SLE_15_SP3 или SLE_15_SP4 (или выше). Для SUSE 12 используйте SLE_12_SP5 (или более поздней версии). Не все версии PHP доступны для всех версий SUSE Linux. Ознакомьтесь с http://download.opensuse.org/repositories/devel:/languages:/php, чтобы увидеть, для каких версий SUSE доступна версия PHP по умолчанию, или проверьте http://download.opensuse.org/repositories/devel:/languages:/php:/, чтобы узнать, какие другие версии PHP доступны для каких версий SUSE.
Замечание
Пакеты для PHP 7.4 или более поздней версии недоступны для SUSE 12 по состоянию на сегодняшний день.
Шаг 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.1 или более поздней версии может быть доступен в тестовых или пограничных репозиториях для 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 7.*
apk add php7 php7-dev php7-pear php7-pdo php7-openssl autoconf make g++
# 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 7.*
sudo apk add php7-apache2 apache2
# 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.2 или 8.3, замените php@8.1 на php@8.2 или php@8.3 соответственно в следующих командах.
Шаг 1. Установка PHP (macOS)
brew tap
brew tap homebrew/core
brew install php@8.1
Теперь PHP должен находиться в системном пути. Запустите php -v , чтобы убедиться, что вы используете правильную версию PHP. Если PHP не находится в системной переменной PATH или это неправильная версия, выполните следующие команды:
brew link --force --overwrite php@8.1
При использовании Apple M1 ARM64 может потребоваться задать путь:
export PATH="/opt/homebrew/bin:$PATH"
Шаг 2. Установка необходимых компонентов (macOS)
Установите драйвер ODBC для macOS, следуя инструкциям по установке драйвера Microsoft ODBC для SQL Server (macOS).
Замечание
Если используется оборудование Apple M1 ARM64, установите microsoft ODBC driver 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)
Замечание
Последняя версия macOS 11.0 Big Sur поставляется с предварительно установленной версией 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.1/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