<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>LUTI @ Microsoft : PHP</title><link>http://blogs.msdn.com/luti/archive/tags/PHP/default.aspx</link><description>Tags: PHP</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>PHP 5 + SQL Server 2008 Express</title><link>http://blogs.msdn.com/luti/archive/2009/02/20/php-5-sql-server-2008-express.aspx</link><pubDate>Fri, 20 Feb 2009 22:00:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9436428</guid><dc:creator>Luciano Caixeta Moreira</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/luti/comments/9436428.aspx</comments><wfw:commentRss>http://blogs.msdn.com/luti/commentrss.aspx?PostID=9436428</wfw:commentRss><description>&lt;p&gt;Estou brincando um pouco com o PHP rodando no IIS 7, fazendo tanto acessos ao MySQL como ao SQL Server Express. Então vou aproveitar o gancho e deixar aqui algumas dicas que podem te ajudar a não perder tempo com alguns detalhes de configuração do ambiente.&lt;/p&gt;  &lt;p&gt;Depois de configurar no IIS um Handler FastCGI para trabalhar com PHP (&lt;a title="http://learn.iis.net/page.aspx/375/setting-up-fastcgi-for-php/" href="http://learn.iis.net/page.aspx/375/setting-up-fastcgi-for-php/"&gt;http://learn.iis.net/page.aspx/375/setting-up-fastcgi-for-php/&lt;/a&gt;), você deve ter feito o teste básico do &amp;lt;?php phpinfo() ?&amp;gt; e salvo o teste.php. Guarde ele…&lt;/p&gt;  &lt;p&gt;Feito algumas gracinhas com o PHP, foi hora de acessar o MySQL. Editei o PHP.ini e retirei o comentário da linha “extension=php_mysql.dll” e fui usar a função “&lt;em&gt;mysql_connect&lt;/em&gt;”, resultado: “PHP Fatal error: Call to undefined function mssql_connect() in …”. Esse erro foi tranquilo, reiniciei o serviço do IIS e alterei a configuração &lt;em&gt;extension_dir&lt;/em&gt; para “.\ext” ao invés de “.\”, pois as dlls estavam nesse diretório. Tudo funcionou corretamente e continuei brincando (nota: depois eu voltei o extension_dir para “.\” e o mysql ainda continuou funcionando, o que indica que isso não trouxe nenhum benefício).&lt;/p&gt;  &lt;p&gt;Então chegou a hora de usar o PHP para acessar o SQL Server. Como eu havia visto um php_mssql.dll no “php.ini”, fui direto lá e descomentei o bendito, mas quando fui utilizá-lo continuei recebendo o mesmo erro de função indefinida. Depois de alguns testes, deixei esse camarada de lado e baixei o &lt;em&gt;SQL Server 2005 Driver for PHP Cumulative Update – October 2008 &lt;/em&gt;(&lt;a title="http://www.microsoft.com/downloads/details.aspx?FamilyId=61BF87E0-D031-466B-B09A-6597C21A2E2A&amp;amp;displaylang=en" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=61BF87E0-D031-466B-B09A-6597C21A2E2A&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=61BF87E0-D031-466B-B09A-6597C21A2E2A&amp;amp;displaylang=en&lt;/a&gt;)&lt;em&gt;.&lt;/em&gt; Importante: esse driver funciona para SQL Server 2008 também, então não precisa ficar correndo atrás de outro.&lt;/p&gt;  &lt;p&gt;Nota: nesse meio tempo, passei a usar uma função do php bem interessante, chamada &lt;em&gt;function_exists, &lt;/em&gt;que nos ajuda a descobrir se o módulo foi carregado corretamente.&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Lucida Console"&gt;if (function_exists('&lt;em&gt;&amp;lt;nome da funcao&amp;gt;&lt;/em&gt;'))       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; echo &amp;quot;Função encontrada&amp;quot;;       &lt;br /&gt;else       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; echo &amp;quot;Aonde está você???&amp;quot;;       &lt;br /&gt;die(&amp;quot;AAAARRRRGGGHHHH&amp;quot;);&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Fiz o extract do pacote, copiei o arquivo &lt;em&gt;php_sqlsrv.dll&lt;/em&gt; para a pasta “&lt;em&gt;ext” &lt;/em&gt;do php e configurei no arquivo php.ini esse novo módulo, adicionado “extension=php_sqlsrv.dll”. Pronto, o módulo passou a ser carregado pelo php, a verificação acima parou de reclamar e o teste.php passou a mostrar o módulo do SQL Server carregado.&lt;/p&gt;  &lt;p&gt;Quando fui abrir minha primeira conexão e executar uma consulta, recebi outra mensagem de erro! Que passou a ser “&lt;em&gt;SQLSTATE: IM002 - message: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified&lt;/em&gt;”. O que fazer??? Depois de um pouco de pesquisa, descobri que precisamos instalar o SQL Server 2005 ODBC driver a partir do feature pack do SQL Server 2005, que pode ser conseguido aqui: &lt;a title="http://www.microsoft.com/downloads/details.aspx?FamilyID=50B97994-8453-4998-8226-FA42EC403D17&amp;amp;displaylang=en" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=50B97994-8453-4998-8226-FA42EC403D17&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=50B97994-8453-4998-8226-FA42EC403D17&amp;amp;displaylang=en&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Feito tudo isso, eu consegui usar o PHP para fazer consultas no SQL Server Express sem a menor dificuldade, o que foi bem legal.&lt;/p&gt;  &lt;p&gt;Espero que esse post o ajude a evitar esses pequenos detalhes de configuração, permitindo-o utilizar o SQL Server com PHP. Mais importante, você pode usar a versão Express do SQL Server, que funciona muito bem para aplicações de menor porte e possui recursos avançados, como manipulação de XML, Full-Text Search, Filestream e reporting, o que o habilita a trabalhar com alguns cenários que são restringidos em diversos outros bancos de dados relacionais.&lt;/p&gt;  &lt;p&gt;Aproveitando a deixa, pergunto: Você está usando o SQL Server Express? Qual o tipo de aplicação?    &lt;br /&gt;Compartilhe aqui o seu caso para discutirmos com o pessoal.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;[]s    &lt;br /&gt;Luciano Caixeta Moreira     &lt;br /&gt;&lt;a href="mailto:luciano.moreira@microsoft.com"&gt;luciano.moreira@microsoft.com&lt;/a&gt;     &lt;br /&gt;===============================================     &lt;br /&gt;This post is provided &amp;quot;AS IS&amp;quot; and confers no right     &lt;br /&gt;===============================================&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9436428" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/luti/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://blogs.msdn.com/luti/archive/tags/PHP/default.aspx">PHP</category><category domain="http://blogs.msdn.com/luti/archive/tags/Express/default.aspx">Express</category></item></channel></rss>