pdo_sqlsrv para microsoft instalar for conexion php sql-server pdo

para - ¿Cómo puedo conectarme al servidor Sql desde una Mac con PHP PDO?



pdo sql server php 7 (5)

¿Esto te ayuda?

http://blog.nguyenvq.com/2010/05/16/freetds-unixodbc-rodbc-r/

Uso FreeTDS para conectarme a servidores Microsoft SQL desde un servidor Linux y parece que la persona en el enlace de arriba ha usado FreeTDS para conectarse desde una Mac.

Aquí está mi archivo /etc/freetds/freetds.conf (la única parte que agregué estaba al final para el servidor XYZ):

[global] # TDS protocol version ; tds version = 4.2 # Whether to write a TDSDUMP file for diagnostic purposes # (setting this to /tmp is insecure on a multi-user system) ; dump file = /tmp/freetds.log ; debug flags = 0xffff # Command and connection timeouts ; timeout = 10 ; connect timeout = 10 # If you get out-of-memory errors, it may mean that your client # is trying to allocate a huge buffer for a TEXT field. # Try setting ''text size'' to a more reasonable limit text size = 64512 # Define a connection to the MSSQL server. [xyz] host = xyz port = 1433 tds version = 8.0

[Editar por el preguntador]

La configuración FreeTDS es la primera mitad de la respuesta. Una vez configurado, debería poder ejecutar algo como esto desde la línea de comando y conectarse:

tsql -S xyz -U username -P password

Entonces necesita usar dblib, no mssql, como el controlador PDO:

$pdo = new PDO("dblib:host=$dbhost;dbname=$dbname", "$dbuser","$dbpwd");

Donde $ dbhost es el nombre del archivo freetds.conf

Si busca en Google esta pregunta, encontrará mucha información incorrecta, engañosa y desactualizada. Sorprendentemente, no hay una respuesta sólida en Stack Overflow, por lo que deberíamos cambiar eso.

Estoy usando la instalación del puerto Mac de Apache y PHP. He instalado php5-mssql, y puedo ver mssql en mi página phpinfo ().

Pero no lo veo listado bajo PDO.

PDO support enabled PDO drivers dblib, mysql, odbc, pgsql

¿Mssql no está asociado con PDO? ¿Hay otro controlador que pueda usarse en una Mac para conectarse a una base de datos SqlServer usando PDO? Parece que esto es algo que debería ser posible.


Después de mirar muchos hilos, descubrí que la mejor manera de conectarse a MSSQL desde Mac OS X con PHP 7 o anterior es usar dblib. (Simplemente descargue la versión de php correcta)

Puedes seguir estas instrucciones (ignorando la extensión mssql.so) para conectarte muy fácilmente:

https://github.com/BellevueCollege/public-docs/blob/master/PHP/configure-mssql-pdodblib-mac.md

Funcionó perfectamente con OS X El Capitán, Bitnami con PHP 7.

Pasos 1.- Instalar XCode

$ xcode-select ---install

2.- Instalar Homebrew

3.- Instalar autoconf usando Homebrew.

$ brew install autoconf

4.- Instalar FreeTDS

$ brew install freetds

5.- Descargue su versión de PHP Source y descomprímalo.

6.- Construya la extensión PDO DBLIB (Ejemplo para PHP 5.5.14)

$ cd php-5.5.14/ext/pdo_dblib $ phpize $ ./configure --with-php-config=/usr/bin/php-config --with-pdo-dblib=/usr/local/ $ make $ sudo cp modules/pdo_dblib.so /usr/lib/php/extensions/no-debug-non-zts-20121212

7.- Agregue la extensión .so a la extensión php.ini = pdo_dblib.so

8.- Reinicia Apache

9.- Conectar usando dblib dsn:

$pdo = new PDO("dblib:host=$dbhost;dbname=$dbname","$dbuser","$dbpwd");


Gracias a Esteban por la buena guía ( share ) que me ayudó a instalar el controlador pdo_dblib.

Sin embargo, tenía problemas para conectarme a mi base de datos SQL de Azure desde OSX 10 con PHP (5.5) y FreeTDS usando el dblib dblib provisto. Lo que finalmente lo solucionó fue agregar la base de datos de Azure (m53man42a) a mi nombre de usuario .

Mi conexión dblib PDO en PHP:

$conn = new PDO("dblib:host=azure-sql;dbname=my-database-name", "username@m53man42a", "my-secret-password");

Mi FreeTDS.conf:

[azure-sql] host = m53man42a.database.windows.net port = 1433 tds version = 8.0 client charset = UTF-8 text size = 20971520

Considere agregar esto como una viñeta número 10 en su lista ...: D


Tenga en cuenta que Microsoft ha publicado una extensión PHP7 para esto, pero si todavía está en PHP5.x, eso no lo ayuda. Logré conectar usando una pila diferente: freetds, odbc, pdo.

Estoy usando OS X 10.11.6 (El Capitan) con Macports, PHP5.6.

Empecé creando una Base de datos SQL de Azure llamada mydb en un servidor con un nombre de myserver.database.windows.net . Es importante recordar abrir el cortafuegos a la dirección IP de su cliente, lo que hace en el servidor.

El primer paso es instalar freetds con el controlador ODBC y su conector PHP (cambie php56 a la versión correcta de su PHP):

sudo port install freetds +odbc sudo port install php56-odbc

A continuación, debe incluir algunas líneas en sus archivos de configuración:

/opt/local/etc/odbcinst.ini

[FreeTDS] Description = ODBC for FreeTDS Driver = /opt/local/lib/libtdsodbc.so Setup = /opt/local/lib/libtdsodbc.so FileUsage = 1

Esto le dice a la biblioteca odbc dónde encontrar su controlador odbc.

/opt/local/etc/freetds/freetds.conf

[myserver] host = myserver.database.windows.net port = 1433 tds version = 7.0

Esto le dice a la biblioteca de freetdc dónde encontrar su servidor.

/opt/local/etc/odbc.ini

[myds] Description = Test for SQL Server on Azure Driver = FreeTDS Trace = Yes TraceFile = /var/log/sql.log Database = mydb Servername = myserver UserName = myusername Password = mypassword Port = 1433 Protocol = 7.0 ReadOnly = No RowVersioning = No ShowSystemTables = No ShowOidColumn = No FakeOidIndex = No

Esto crea una fuente de datos llamada myds apunta a su base de datos, lo que le permite conectarse con el siguiente PHP:

$conn = new PDO(''odbc:myds'', ''myusername'', ''mypassword'');

Si algo de esto no funciona para usted, primero verifique que la instalación de freetds sea correcta usando:

tsql -S myserver -U myusername -P mypassword

Y luego verifique que las especificaciones ODBC estén correctas usando:

isql -v myds myusername mypassword

Gracias a https://github.com/lionheart/django-pyodbc/wiki/Mac-setup-to-connect-to-a-MS-SQL-Server , que hace el trabajo equivalente para Python y que me señaló en el derecho dirección para todo esto.