Dela via


Handledning för installation av Microsoft-drivrutiner för PHP på Linux och macOS för SQL Server

Följande instruktioner förutsätter en ren miljö och visar hur du installerar PHP 8.1, Microsoft ODBC-drivrutinen, Apache-webbservern och Microsoft Drivers for PHP för SQL Server på Ubuntu, Red Hat, Debian, SUSE, Alpine och macOS. De här anvisningarna rekommenderar att du installerar drivrutinerna med PECL, men du kan också ladda ned de fördefinierade binärfilerna från Microsoft Drivers for PHP för SQL Server GitHub-projektsidan och installera dem enligt anvisningarna i Läsa in Microsoft-drivrutiner för PHP för SQL Server. En förklaring av tilläggets inläsning och varför vi inte lägger till tilläggen i php.inifinns i avsnittet om att läsa in drivrutinerna.

Följande instruktioner installerar PHP 8.1 som standard med , pecl installom PHP 8.1-paketen är tillgängliga. Du kan behöva köra pecl channel-update pecl.php.net först. Vissa Linux-distributioner som stöds är som standard PHP 7.1 eller tidigare, vilket inte stöds för den senaste versionen av PHP-drivrutinerna för SQL Server. Se anteckningarna i början av varje avsnitt för att installera PHP 8.2 eller 8.3 i stället.

Instruktioner finns även för att installera PHP FastCGI Process Manager, PHP-FPM, på Ubuntu. PHP-FPM behövs om du använder nginx-webbservern i stället för Apache.

De här instruktionerna innehåller kommandon för att installera både SQLSRV- och PDO_SQLSRV-drivrutiner, men drivrutinerna kan installeras och fungera oberoende av varandra. Användare som är bekväma med att anpassa sin konfiguration kan justera dessa instruktioner så att de är specifika för SQLSRV eller PDO_SQLSRV. Båda drivrutinerna har samma beroenden såvida inget annat anges nedan.

Se SupportMatris för den senaste versionen av operativsystem som stöds.

Anmärkning

Kontrollera att du har installerat den senaste ODBC-drivrutinsversionen för att säkerställa optimal prestanda och säkerhet. Installationsinstruktioner finns i Installera Microsoft ODBC-drivrutinen för SQL Server (Linux) eller Installera Microsoft ODBC-drivrutinen för SQL Server (macOS).

Installera på Ubuntu

Anmärkning

Om du vill installera PHP 8.2 eller 8.3 ersätter du 8.1 med 8.2 eller 8.3 i följande kommandon.

Steg 1. Installera 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

Steg 2. Installera förutsättningar (Ubuntu)

Installera ODBC-drivrutinen för Ubuntu genom att följa anvisningarna i Installera Microsoft ODBC-drivrutinen för SQL Server (Linux). Se till att även installera unixodbc-dev paketet. Det används av pecl kommandot för att installera PHP-drivrutinerna.

sudo apt-get install unixodbc-dev

Steg 3. Installera PHP-drivrutinerna för 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

Om det bara finns en PHP-version i systemet kan det sista steget förenklas till phpenmod sqlsrv pdo_sqlsrv.

Steg 4. Installera Apache och konfigurera inläsning av drivrutiner (Ubuntu)

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

Steg 5. Starta om Apache och testa exempelskriptet (Ubuntu)

sudo service apache2 restart

Information om hur du testar installationen finns i Testa installationen i slutet av det här dokumentet.

Installera på Ubuntu med PHP-FPM

Anmärkning

Om du vill installera PHP 8.2 eller 8.3 ersätter du 8.1 med 8.2 eller 8.3 i följande kommandon.

Steg 1. Installera PHP (Ubuntu med 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

Kontrollera statusen för PHP-FPM-tjänsten genom att köra:

systemctl status php8.1-fpm

Steg 2. Installera krav (Ubuntu med PHP-FPM)

Installera ODBC-drivrutinen för Ubuntu genom att följa anvisningarna i Installera Microsoft ODBC-drivrutinen för SQL Server (Linux). Se till att även installera unixodbc-dev paketet. Det används av pecl kommandot för att installera PHP-drivrutinerna.

Steg 3. Installera PHP-drivrutinerna för Microsoft SQL Server (Ubuntu med 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

Om det bara finns en PHP-version i systemet kan det sista steget förenklas till phpenmod sqlsrv pdo_sqlsrv.

Kontrollera att sqlsrv.ini och pdo_sqlsrv.ini finns i /etc/php/8.1/fpm/conf.d/:

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

Starta om PHP-FPM-tjänsten:

sudo systemctl restart php8.1-fpm

Steg 4. Installera och konfigurera nginx (Ubuntu med PHP-FPM)

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

Om du vill konfigurera nginx måste du redigera /etc/nginx/sites-available/default filen. Lägg till index.php i listan under avsnittet som säger # 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;

Därefter avkommentera och ändra avsnittet efter # pass PHP scripts to FastCGI server enligt följande:

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

Steg 5. Starta om nginx och testa exempelskriptet (Ubuntu med PHP-FPM)

sudo systemctl restart nginx.service

Information om hur du testar installationen finns i Testa installationen i slutet av det här dokumentet.

Installera på Red Hat

Steg 1. Installera PHP (Red Hat)

Kör följande kommandon för att installera PHP på Red Hat 7:

Anmärkning

Om du vill installera PHP 8.2 eller 8.3 ersätter du remi-php81 med remi-php82 respektive remi-php83 i följande kommandon.

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

Installera PHP på Red Hat 8 genom att köra följande kommandon:

Anmärkning

Om du vill installera PHP 8.2 eller 8.3 ersätter du remi-8.1 med remi-8.2 respektive remi-8.3 i följande kommandon.

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

Steg 2. Installera förutsättningar (Red Hat)

Installera ODBC-drivrutinen för Red Hat 7 eller 8 genom att följa anvisningarna i Installera Microsoft ODBC-drivrutinen för SQL Server (Linux). Se till att även installera unixodbc-dev paketet. Det används av pecl kommandot för att installera PHP-drivrutinerna.

Steg 3. Installera PHP-drivrutinerna för 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

Du kan också installera från Remi-lagringsplatsen:

sudo yum install php-sqlsrv

Steg 4. Installera Apache (Red Hat)

sudo yum install httpd

SELinux installeras som standard och körs i framtvingande läge. Kör följande kommando för att tillåta Apache att ansluta till databaser via SELinux:

sudo setsebool -P httpd_can_network_connect_db 1

Steg 5. Starta om Apache och testa exempelskriptet (Red Hat)

sudo apachectl restart

Information om hur du testar installationen finns i Testa installationen i slutet av det här dokumentet.

Installera på Debian

Anmärkning

Om du vill installera PHP 8.2 eller 8.3 ersätter du 8.1 i följande kommandon med 8.2 eller 8.3.

Steg 1. Installera 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

Steg 2. Installera förutsättningar (Debian)

Installera ODBC-drivrutinen för Debian genom att följa anvisningarna i Installera Microsoft ODBC-drivrutinen för SQL Server (Linux). Se till att även installera unixodbc-dev paketet. Det används av pecl kommandot för att installera PHP-drivrutinerna.

Du kan också behöva generera rätt nationella inställningar för att få PHP-utdata att visas korrekt i en webbläsare. Kör till exempel följande kommandon för en_US UTF-8-språk:

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

Du kan behöva lägga till /usr/sbin i din $PATH, eftersom den körbara filen locale-gen är placerad där.

Steg 3. Installera PHP-drivrutinerna för 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

Om det bara finns en PHP-version i systemet kan det sista steget förenklas till phpenmod sqlsrv pdo_sqlsrv. Precis som med locale-gen, finns phpenmod i /usr/sbin, så kan det vara så att du behöver lägga till den här katalogen i din $PATH.

Steg 4. Installera Apache och konfigurera drivrutinsinläsning (Debian)

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

Steg 5. Starta om Apache och testa exempelskriptet (Debian)

sudo service apache2 restart

Information om hur du testar installationen finns i Testa installationen i slutet av det här dokumentet.

Installera på SUSE

Anmärkning

I följande instruktioner ersätter <SuseVersion> du med din version av SUSE – om du använder SUSE Linux Enterprise Server 15 blir det SLE_15_SP3 eller SLE_15_SP4 (eller senare). För SUSE 12 använder du SLE_12_SP5 (eller senare). Alla versioner av PHP är inte tillgängliga för alla versioner av SUSE Linux – se http://download.opensuse.org/repositories/devel:/languages:/php vilka versioner av SUSE som har standardversionen PHP tillgänglig eller kontrollera http://download.opensuse.org/repositories/devel:/languages:/php:/ vilka andra versioner av PHP som är tillgängliga för vilka versioner av SUSE.

Anmärkning

Paket för PHP 7.4 eller senare är inte tillgängliga för SUSE 12 från och med idag.

Steg 1. Installera 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

Steg 2. Installera förutsättningar (SUSE)

Installera ODBC-drivrutinen för SUSE genom att följa anvisningarna i Installera Microsoft ODBC-drivrutinen för SQL Server (Linux). Se till att även installera unixodbc-dev paketet. Det används av pecl kommandot för att installera PHP-drivrutinerna.

Steg 3. Installera PHP-drivrutinerna för 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

Steg 4. Installera Apache och konfigurera inläsning av drivrutiner (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

Steg 5. Starta om Apache och testa exempelskriptet (SUSE)

sudo systemctl restart apache2

Information om hur du testar installationen finns i Testa installationen i slutet av det här dokumentet.

Installera på Alpine

Anmärkning

PHP 8.1 eller senare kan vara tillgängligt från testnings- eller kantlagringsplatser för Alpine. Du kan i stället kompilera PHP från källan.

Steg 1. Installera PHP (Alpine)

PHP-paket för Alpine finns på lagringsplatsen edge/community . Kontrollera Enable Community Repository på deras wiki-sida. Lägg till följande rad i /etc/apk/repositoriesoch ersätt <mirror> med URL:en för en alpin lagringsplatsspegling:

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

Kör sedan:

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

Steg 2. Installera förutsättningar (Alpine)

Installera ODBC-drivrutinen för Alpine genom att följa anvisningarna i Installera Microsoft ODBC-drivrutinen för SQL Server (Linux). Se till att även installera unixodbc-dev paketet (sudo apk add unixodbc-dev). Det används av pecl kommandot för att installera PHP-drivrutinerna.

Steg 3. Installera PHP-drivrutinerna för 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

Steg 4. Installera Apache och konfigurera drift av drivrutiner (Alpine)

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

Steg 5. Starta om Apache och testa exempelskriptet (Alpine)

sudo rc-service apache2 restart

Information om hur du testar installationen finns i Testa installationen i slutet av det här dokumentet.

Installera på macOS

Om du inte redan har det installerar du brew enligt följande:

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

Anmärkning

Om du vill installera PHP 8.2 eller 8.3 ersätter du php@8.1 med php@8.2 respektive php@8.3 i följande kommandon.

Steg 1. Installera PHP (macOS)

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

PHP bör nu vara i din väg. Kör php -v för att kontrollera att du kör rätt version av PHP. Om PHP inte finns i sökvägen eller om det inte är rätt version kör du följande kommandon:

brew link --force --overwrite php@8.1

Om du använder Apple M1 ARM64 kan du behöva ange sökvägen:

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

Steg 2. Installera förutsättningar (macOS)

Installera ODBC-drivrutinen för macOS genom att följa anvisningarna i Installera Microsoft ODBC-drivrutinen för SQL Server (macOS).

Anmärkning

Om du använder Apple M1 ARM64-maskinvara installerar du Microsoft ODBC-drivrutinen 17.8+ direkt utan att använda emulatorn Rosetta 2.

Dessutom kan du behöva installera GNU-verktygen:

brew install autoconf automake libtool

Steg 3. Installera PHP-drivrutinerna för Microsoft SQL Server (macOS)

sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv

Om du använder Apple M1 ARM64 gör du följande i stället:

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

Steg 4. Installera Apache och konfigurera inläsning av drivrutiner (macOS)

Anmärkning

Den senaste macOS 11.0 Big Sur levereras med Apache 2.4 förinstallerad, men Apple har också tagit bort några nödvändiga skript. Lösningen är att installera Apache 2.4 via Homebrew och sedan konfigurera det, men det här är utanför omfånget för den här installationsguiden, så se Apache eller Homebrew för detaljerade instruktioner.

brew install apache2

För att hitta Apache-konfigurationsfilen för din Apache-inställning, kör: httpd.conf

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

Följande kommandon lägger till den nödvändiga konfigurationen i httpd.conf. Se till att ersätta sökvägen som returneras av föregående kommando i stället för /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

Steg 5. Starta om Apache och testa exempelskriptet (macOS)

sudo apachectl restart

Information om hur du testar installationen finns i Testa installationen i slutet av det här dokumentet.

Testa installationen

Om du vill testa det här exempelskriptet skapar du en fil med namnet testsql.php i systemets dokumentrot. Den här sökvägen finns /var/www/html/ på Ubuntu, Debian och Red Hat, /srv/www/htdocs på SUSE, /var/www/localhost/htdocs på Alpine eller /usr/local/var/www på macOS. Kopiera följande skript till det och ersätt servern, databasen, användarnamnet och lösenordet efter behov.

SQLSRV-exempel

<?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 exempel

<?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);
?>

Peka webbläsaren på https://localhost/testsql.php (https://localhost:8080/testsql.php på macOS). Nu bör du kunna ansluta till din SQL Server/Azure SQL-databas. Om du inte ser något meddelande om att SQL-versionen har slutförts kan du utföra grundläggande felsökning genom att köra skriptet från kommandoraden:

php testsql.php

Om det går att köra från kommandoraden men inget visas i webbläsaren kontrollerar du Apache-loggfilerna. Mer hjälp finns i Supportresurser för platser att gå till.

Se även

Komma igång med Microsoft-drivrutiner för PHP för SQL Server

Läser in Microsoft-drivrutiner för PHP för SQL Server

Systemkrav för Microsoft-drivrutiner för PHP för SQL Server