Instalando drive PDO PHP do SQL Server no Linux

Instalando o PHP

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

Instalando os pré requisitos (Ubuntu 16.04 18.04 20.04 22.04)

sudo curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -

sudo curl https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list > /etc/apt/sources.list.d/mssql-release.list

Instalando o ODBC do SQL Server 17

sudo apt update
sudo ACCEPT_EULA=Y apt install -y msodbcsql17
sudo apt install unixodbc-dev

Opcional: Para usar ferramentas como BCP e SQLcmd

sudo ACCEPT_EULA=Y apt-get install -y mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc

Instalando o driver PDO do SQL Server no PHP

sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv

Setando a configuração do driver

sudo printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/8.1/mods-available/sqlsrv.ini

sudo printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.1/mods-available/pdo_sqlsrv.ini

Habilitando a configuração

sudo phpenmod -v 8.1 sqlsrv pdo_sqlsrv

Se estiver usando Apache, ele deve ser reiniciado

sudo service apache2 restart

Referências

Configurando variáveis de ambiente no Apache

Criando no um arquivo separado com somente com as variáveis

sudo vim /etc/apache2/conf-available/env-vars.conf

Definindo as variáveis no arquivo

SetEnv PASS_DB "senhaBemForte"
SetEnv USER_DB "stringAleatoria"
SetEnv TESTE "olha o teste"

Habilitando a configuração

sudo a2enconf env-vars

Reiniciando o Apache

sudo systemctl reload apache2

Observações

  • Fique atento às brechas de segurança da sua aplicação. As variáveis criadas podem ser acessadas via <?=phpinfo();?> , leia esse post.
  • Se você estiver usando o PHP-FPM essas variáveis não serão enxergadas pelo PHP.

Referências

    • https://httpd.apache.org/docs/2.4/mod/mod_env.html#setenv
    • https://docstore.mik.ua/orelly/linux/apache/ch04_06.htm
    • https://www.doppler.com/blog/configuring-php-applications-using-environment-variables
    • https://stackoverflow.com/questions/6554583/how-secure-is-storing-db-variables-with-setenv-or-in-php-ini
    • https://imasters.com.br/desenvolvimento/protegendo-seus-dados-utilizando-variaveis-de-ambiente
    • https://www.linode.com/community/questions/23444/how-do-i-access-environment-variables-set-in-conf-file-in-php-code