segunda-feira, 29 de julho de 2013

Aplicação PHP rodando no Linux com banco de dados SQL Server no Windows

Olá galera,

Nesse post vou compartilhar uma solução para o caso de uma aplicação PHP rodando no Linux e o SQL Server no servidor Windows.

O primeiro ponto é ter instalado o pacote php5-sybase. Esse pacote fornece o módulo de conexão com bancos Sybase e SQL Server. No Ubuntu, basta executar o comando abaixo caso não o possua instalado.

sudo apt-get install php5-sybase

Supondo que nossa aplicação seja UTF-8 e o banco esteja usando collation Latin1_General_CI_AS. Assim que a aplicação for executada, todas as strings vindas do banco que possuem acento não vão ser exibidas.

Para solucionar o problema, vamos precisar editar um arquivo de configuração do FreeTDS. Para quem não conhece, o FreeTDS é um conjunto de bibliotecas que permite que seus programas "conversem" nativamente com SQL Server e Sybase.

No comando abaixo estou usando o VIM mas fique a vontade para utilizar editor um de sua preferência.

sudo vim /etc/freetds/freetds.conf

No trecho de configurações globais, altere o tds version para 7.0 e logo abaixo dessa linha acrescente client charset = UTF-8. Após a alteração o arquivo deve ficar similar ao trecho abaixo com as alterações em vermelho.

# Global settings are overridden by those in a database
# server specific section
[global]
    # TDS protocol version
        tds version = 7.0
        client charset = UTF-8

OBS: Não altere e nem remova os outros parâmetros nesse arquivo.

Com essa alteração o problema dos acentos devem ser resolvidos. Essa solução foi testada em servidores Ubuntu e CentOS mas deve funcionar com as demais distribuições Linux.

Bem pessoal, espero que a dica tenha sido útil.

Um abraço e até próxima.

Nenhum comentário:

Postar um comentário