conectar con charset php laravel laravel-4 laravel-3

php - charset - ¿Cómo usar la conexión de SQL Server en Laravel?



mongodb laravel ubuntu (3)

Ahh después de mucha más investigación, descubrí que mi controlador de SQL Server Native Client 10.0 estaba desactualizado y no era suficiente para conectarse a un MsSQL Server 2008 con PDO, necesita tener al menos la versión 11.0 para conectarse a un SQL Server 2005+

Si desea validar su versión del controlador, puede ir a través Control Panel >> Administrative Tools >> Data Sources (ODBC) y luego hacer clic en la pestaña Drivers para averiguar qué SQL Server Native Client ya ha instalado. Si desea actualizar su controlador, dependiendo de la configuración de su sistema operativo, puede elegir el enlace adecuado a continuación ...

SQL Server 2012 Native Client
Paquete x86 (32 bits) http://go.microsoft.com/fwlink/?LinkID=239647&clcid=0x409
Paquete x64 (64 bits) http://go.microsoft.com/fwlink/?LinkID=239648&clcid=0x409

Tengo un proyecto de trabajo hecho en Laravel 3 que tengo que cambiar al servidor MsSQL (no es mi llamada, olfatear ...) y no entiendo la configuración de Laravel en este tipo de base de datos ...

Cambié el predeterminado dentro de database.php a este ''default'' => ''sqlsrv'' luego configuré el host, la base de datos, el nombre de usuario, la contraseña en la matriz sqlsrv pero luego sqlsrv este mensaje de error:

Esta extensión requiere el controlador ODBC de Native Client de Microsoft SQL Server 2012 para comunicarse con SQL Server.

Después de algunas investigaciones encontré que necesitamos PDO de SQLSRV, que ya tengo como versión 5.4 y en mi phpinfo obtengo este pdo_sqlsrv support : enabled devuelto pdo_sqlsrv support : enabled por lo que parece todo correcto, pero al mismo tiempo parece pedir conexiones ODBC SQLSRV, ¿De verdad tengo que usar eso?

Preferiría conectarme directamente desde la conexión de la base de datos de Laravel ... pero incluso si lo necesito y creé alguna conexión ODBC al servidor, ¿cómo los pongo dentro de mi configuración? Esto es lo que tengo en mi configuración (por supuesto, el my... es reemplazarlo por mis detalles reales):

''sqlsrv'' => array( ''driver'' => ''sqlsrv'', ''host'' => ''myServerIP'', ''database'' => ''myDatabase'', ''username'' => ''myUsername'', ''password'' => ''myPassword'', ''prefix'' => '''', ),

Cualquier ayuda sería muy apreciada, lo único que encontré cerca de mi problema fue este enlace del foro de Laravel : consulta Laravel en SQL Server, pero luego simplemente se detiene sin dar ninguna configuración.


Eso es lo que hice para conectar mi aplicación Laravel a MS SQL Server:

  1. sudo apt-get update

  2. sudo apt-get install php5-sybase

si intentas instalar php5-mssql, instalará php5-sybase de todos modos, es "Módulo Sybase / MS SQL Server para php5".

esto hará que Laravel use el controlador dblib en lugar de sqlsrv.

consulte este archivo para referencia Illuminate / Database / Connectors / SqlServerConnector.php.

  1. abra este archivo: /etc/freetds/freetds.conf

en [global] sección [global] y en la tds version = 4.2

add tds version = 8.0 (sin; semi column al principio de la línea)

y agregue el charset = UTF-8 cliente charset = UTF-8 justo debajo de la línea anterior (sin; semicolumna al comienzo de la línea)

Esto permite que el controlador codifique todos los datos en utf-8 y evite los caracteres extraños en los datos

el archivo se verá así:

[global]         # TDS protocol version ;       tds version = 4.2         tds version = 8.0         client charset = UTF-8

  1. cree el archivo locales.conf en este directorio / etc / freetds y pase lo siguiente dentro de él: (esto permite el análisis correcto de las fechas con SQL Server).

[default]     date format = %Y-%m-%d %I:%M:%S.%z [en_US]     date format = %b %e %Y %I:%M:%S:%z%p     language = us_english     charset = iso_1

  1. edite el archivo php.ini

primero encuentre el archivo con php -i | grep php.ini

luego abra el archivo y busque mssql.charset (probablemente será así como deshabilitado ; mssql.charset = "ISO-8859-1" )

hazlo mssql.charset = "UTF-8" << asegúrate de eliminar el; semi columna para habilitarlo >>

guardar y Salir

  1. ahora reinicie su servidor (nginx o apache o php-fpm)

  2. por supuesto, usted sabe que necesita establecer la configuración de la base de datos para usar sqlsrv de forma predeterminada ''default'' => ''sqlsrv'', y agregue sus credenciales.

OTROS METODOS:

puede usar el controlador ODBC para conectarse

aquí hay un buen paquete https://github.com/ccovey/odbc-driver


Para Linux, Laravel 5 y php 7.1:

  1. Agregue la conexión como dice here
  2. sudo apt install php7.1-sybase
  3. Inténtalo de nuevo :)