Banco de Dados · 3 min read · Oct 25, 2025
Acesso PHP a um Banco de Dados MSSQL a partir do Debian Etch com ODBC e FreeTDS
Acesso PHP a um Banco de Dados MSSQL a partir do Debian Etch com ODBC e FreeTDS
Isso assume que você já tem o Apache2 e o PHP5 configurados corretamente em seu sistema. Meus esforços para fazer essa conexão funcionar foram compilados a partir de informações encontradas em www.unixodbc.org e www.freetds.org. Esses passos funcionaram para mim com um servidor web Apache2 com php5 rodando no Debian Etch estável em outubro de 2007. O servidor SQL está rodando Microsoft SQL 2005 em um sistema operacional Windows 2003 Server.
Nestes instruções, assumo que você fez su para uma conta root. Eu também uso o joe como meu editor, então substitua isso pelo seu editor de escolha.
Primeiro, instale os pacotes necessários:
#apt-get install tdsodbc libct3 unixodbc php5-odbcIsso deve baixar e instalar o unixODBC, FreeTDS e as extensões odbc para php5.
Em seguida, criamos templates para registrar o Driver ODBC para FreeTDS e para criar o DSN ODBC para FreeTDS. Você pode colocar esses arquivos onde quiser, pois você usará “odbcinst” para realmente configurar o sistema. Eu escolhi hospedá-los em /etc/freetds, onde os arquivos de configuração tds residem.
Registro do Driver ODBC:
#joe /etc/freetds/tds.driver.templateEntão cole isso no editor:
[TDS]
Description = Driver FreeTDS para Linux & MSSQL em Win32
Driver = /usr/lib/odbc/libtdsodbc.so
Setup = /usr/lib/odbc/libtdsS.soAgora o DSN:
#joe /etc/freetds/tds.dsn.templateEntão cole isso no editor:
[DSN_NAME]
Description = Teste para freeTDS
Driver = TDS
Trace = Não
Database = DefaultDatabase [substitua pelo nome do seu banco de dados]
Server = mysqlserver.inter.net [substitua pelo host do seu servidor SQL]
Port = 5050 [substitua pela porta que o SQL está escutando]Ok, agora você precisa inserir esses templates no sistema unixODBC:
#odbcinst -i -d -f /etc/freetds/tds.driver.template#odbcinst -i -s -f /etc/freetds/tds.dsn.templateUm problema que tive neste ponto é que o DSN foi instalado nas configurações odbc pessoais da conta root. Como não posso fazer login como www-data para executar o comando de instalação do dsn, simplesmente copiei o arquivo .odbc do root para /etc/odbc.ini, que é o arquivo DSN de sistema que todos os usuários podem referenciar.
#mv /etc/odbc.ini /etc/odbc.ini.bak [caso você tenha outros]#cp /root/.odbc.ini /etc/odbc.iniAgora você precisa habilitar a extensão odbc no php editando seu arquivo php.ini. A menos que você tenha feito algum tipo de compilação ou instalação personalizada, o arquivo ini do php deve estar no diretório /etc/php5/apache2/, então:
#joe /etc/php5/apache2/php.iniA melhor prática é adicionar isso à seção de extensões do arquivo php.ini:
extension = odbc.soAgora você precisa reiniciar o Apache para que as alterações do php entrem no sistema.
#/etc/init.d/apache2 restartIsso deve ser tudo. Supondo que você tenha conectividade com a máquina MSSQL, você deve ser capaz de testar essa configuração usando isql. Usando as configurações acima e um nome de usuário Bob com uma senha Marley, aqui está o teste:
#isql -v DSN_NAME Bob MarleyVocê deve obter o prompt SQL> e pode executar qualquer comando select ou outros comandos que desejar. Agora, vamos para a parte do PHP. Tudo que você precisa fazer (novamente assumindo os exemplos acima) é adicionar as informações de conexão ao seu arquivo php e começar a codificar. O seguinte é um exemplo básico que você, é claro, precisará adaptar à sua vontade.
Se você tiver problemas, comece com a solução básica de problemas de rede. Certifique-se de que você pode pingar o servidor a partir da sua caixa Debian. Tente telnetar para o servidor e a porta que o MSSQL está escutando. Se estiver funcionando, você deve obter uma tela em branco da qual precisa sair. Depois disso, se o exemplo isql funcionar, mas sua conexão php não, não tenho certeza de onde apontá-lo.
Boa sorte!
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.