Homestead: Add sqlsrv driver extension for php 7.1

Created on 12 Jul 2017  路  15Comments  路  Source: laravel/homestead

please, add the extension on homestead, here the instructions: https://github.com/Microsoft/msphpsql#php-71

this is the oficial microsoft driver for sql server to ubuntu. and if we want use this driver, this must already be installed on homestead.

Most helpful comment

Here's what worked for me:

after.sh

#!/bin/sh

PHP_MSSQL_DRIVERS=Ubuntu18-7.2

# Download and extract phpmysql drivers
sudo wget "https://github.com/Microsoft/msphpsql/releases/download/v5.3.0/${PHP_MSSQL_DRIVERS}.tar" -O - | tar -x

# Change Directory
cd $PHP_MSSQL_DRIVERS

# Change owner/group
sudo chown root:root php_pdo_sqlsrv_72_nts.so
sudo chown root:root php_sqlsrv_72_nts.so
# Modify permissions
sudo chmod 644 php_pdo_sqlsrv_72_nts.so
sudo chmod 644 php_sqlsrv_72_nts.so

# Move files
sudo mv php_pdo_sqlsrv_72_nts.so /usr/lib/php/20170718
sudo mv php_sqlsrv_72_nts.so /usr/lib/php/20170718

# Cleanup
cd .. && sudo rm -rf $PHP_MSSQL_DRIVERS

# Create new .ini file
sudo touch /etc/php/7.2/mods-available/pdo_sqlsrv.ini
echo "extension=php_pdo_sqlsrv_72_nts.so" | sudo tee -a /etc/php/7.2/mods-available/pdo_sqlsrv.ini > /dev/null

# Create Symlinks
sudo ln -sfn /etc/php/7.2/mods-available/pdo_sqlsrv.ini /etc/php/7.2/cli/conf.d/20-pdo_sqlsrv.ini
sudo ln -sfn /etc/php/7.2/mods-available/pdo_sqlsrv.ini /etc/php/7.2/fpm/conf.d/20-pdo_sqlsrv.ini

# Enable PHP extension
echo "extension=php_sqlsrv_72_nts.so" | sudo tee -a /etc/php/7.2/cli/php.ini > /dev/null
echo "extension=php_sqlsrv_72_nts.so" | sudo tee -a /etc/php/7.2/fpm/php.ini > /dev/null

# Install Microsoft ODBC Driver 17 for SQL Server requirements
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo sh -c 'curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list'
# Update package lists
sudo apt-get update
# Install Microsoft ODBC Driver
yes Y | sudo ACCEPT_EULA=Y apt-get install msodbcsql17

# Restart services
sudo service php7.2-fpm restart
sudo service nginx restart

All 15 comments

Thanks, Will look into it.

This will be in the next base box release: https://github.com/laravel/settler/releases/tag/v2.2.0

OK. thank you

Just created a new Homestead environment today. Should I be able to use the sqlsrv driver now? So far it's still giving me the "could not find driver" error. Is there something I need to do first with my Vagrant box...? Using PHP 7.2. Thanks.

@elramus No, we're not supporting the sqlsrv driver any longer: https://github.com/laravel/homestead/issues/719#issuecomment-344470607

Oh ok, thanks.

encontre esto y funciono php7.2:

para instalar mssql

#los drivers necesarios
#https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-2017
#para los drivers puntuales
#https://github.com/Microsoft/msphpsql/issues/81
    #pecl search sqlsrv
    #sudo pecl install sqlsrv-4.1.6.1
    #sudo pecl install pdo_sqlsrv-4.1.6.1

    #y para copiar de uno a otro

# cp 7.2/cli/conf.d/20-sqlsrv.ini 7.0/apache2/conf.d/20-sqlsrv.ini  
# cp 7.2/cli/conf.d/20-pdo_sqlsrv.ini 7.0/apache2/conf.d/20-pdo_sqlsrv.ini          
# cp /etc/php/7.2/cli/conf.d/20-sqlsrv.ini /etc/php/7.2/fpm/conf.d/20-sqlsrv.ini    
# cp /etc/php/7.2/cli/conf.d/20-pdo_sqlsrv.ini /etc/php/7.2/fpm/conf.d/20-pdo_sqlsrv.ini

verifica que se registren los drivers en el php.ini, sugiero usar phpinfo() para ver este tema, ademas usar el locate para buscar donde se crearon los drivers. aun no se como ponerlo en las versiones viejitas de php, pero con paciencia lo logras instalar en el php7.2.
suerte

Here's what worked for me:

after.sh

#!/bin/sh

PHP_MSSQL_DRIVERS=Ubuntu18-7.2

# Download and extract phpmysql drivers
sudo wget "https://github.com/Microsoft/msphpsql/releases/download/v5.3.0/${PHP_MSSQL_DRIVERS}.tar" -O - | tar -x

# Change Directory
cd $PHP_MSSQL_DRIVERS

# Change owner/group
sudo chown root:root php_pdo_sqlsrv_72_nts.so
sudo chown root:root php_sqlsrv_72_nts.so
# Modify permissions
sudo chmod 644 php_pdo_sqlsrv_72_nts.so
sudo chmod 644 php_sqlsrv_72_nts.so

# Move files
sudo mv php_pdo_sqlsrv_72_nts.so /usr/lib/php/20170718
sudo mv php_sqlsrv_72_nts.so /usr/lib/php/20170718

# Cleanup
cd .. && sudo rm -rf $PHP_MSSQL_DRIVERS

# Create new .ini file
sudo touch /etc/php/7.2/mods-available/pdo_sqlsrv.ini
echo "extension=php_pdo_sqlsrv_72_nts.so" | sudo tee -a /etc/php/7.2/mods-available/pdo_sqlsrv.ini > /dev/null

# Create Symlinks
sudo ln -sfn /etc/php/7.2/mods-available/pdo_sqlsrv.ini /etc/php/7.2/cli/conf.d/20-pdo_sqlsrv.ini
sudo ln -sfn /etc/php/7.2/mods-available/pdo_sqlsrv.ini /etc/php/7.2/fpm/conf.d/20-pdo_sqlsrv.ini

# Enable PHP extension
echo "extension=php_sqlsrv_72_nts.so" | sudo tee -a /etc/php/7.2/cli/php.ini > /dev/null
echo "extension=php_sqlsrv_72_nts.so" | sudo tee -a /etc/php/7.2/fpm/php.ini > /dev/null

# Install Microsoft ODBC Driver 17 for SQL Server requirements
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo sh -c 'curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list'
# Update package lists
sudo apt-get update
# Install Microsoft ODBC Driver
yes Y | sudo ACCEPT_EULA=Y apt-get install msodbcsql17

# Restart services
sudo service php7.2-fpm restart
sudo service nginx restart

richvida Thanks
It's work for me.
I'm using laravel 5.7 with homestead and sql server azure database

Here's what worked for me:

after.sh

#!/bin/sh

PHP_MSSQL_DRIVERS=Ubuntu18-7.2

# Download and extract phpmysql drivers
sudo wget "https://github.com/Microsoft/msphpsql/releases/download/v5.3.0/${PHP_MSSQL_DRIVERS}.tar" -O - | tar -x

# Change Directory
cd $PHP_MSSQL_DRIVERS

# Change owner/group
sudo chown root:root php_pdo_sqlsrv_72_nts.so
sudo chown root:root php_sqlsrv_72_nts.so
# Modify permissions
sudo chmod 644 php_pdo_sqlsrv_72_nts.so
sudo chmod 644 php_sqlsrv_72_nts.so

# Move files
sudo mv php_pdo_sqlsrv_72_nts.so /usr/lib/php/20170718
sudo mv php_sqlsrv_72_nts.so /usr/lib/php/20170718

# Cleanup
cd .. && sudo rm -rf $PHP_MSSQL_DRIVERS

# Create new .ini file
sudo touch /etc/php/7.2/mods-available/pdo_sqlsrv.ini
echo "extension=php_pdo_sqlsrv_72_nts.so" | sudo tee -a /etc/php/7.2/mods-available/pdo_sqlsrv.ini > /dev/null

# Create Symlinks
sudo ln -sfn /etc/php/7.2/mods-available/pdo_sqlsrv.ini /etc/php/7.2/cli/conf.d/20-pdo_sqlsrv.ini
sudo ln -sfn /etc/php/7.2/mods-available/pdo_sqlsrv.ini /etc/php/7.2/fpm/conf.d/20-pdo_sqlsrv.ini

# Enable PHP extension
echo "extension=php_sqlsrv_72_nts.so" | sudo tee -a /etc/php/7.2/cli/php.ini > /dev/null
echo "extension=php_sqlsrv_72_nts.so" | sudo tee -a /etc/php/7.2/fpm/php.ini > /dev/null

# Install Microsoft ODBC Driver 17 for SQL Server requirements
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo sh -c 'curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list'
# Update package lists
sudo apt-get update
# Install Microsoft ODBC Driver
yes Y | sudo ACCEPT_EULA=Y apt-get install msodbcsql17

# Restart services
sudo service php7.2-fpm restart
sudo service nginx restart

richvida Thanks
It's work for me.
I'm using laravel 5.7 with homestead and sql server azure database

encontre esto y funciono php7.2:

para instalar mssql

los drivers necesarios

https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-2017

para los drivers puntuales

Microsoft/msphpsql#81

pecl search sqlsrv

sudo pecl install sqlsrv-4.1.6.1

sudo pecl install pdo_sqlsrv-4.1.6.1

    #y para copiar de uno a otro

# cp 7.2/cli/conf.d/20-sqlsrv.ini 7.0/apache2/conf.d/20-sqlsrv.ini    
# cp 7.2/cli/conf.d/20-pdo_sqlsrv.ini 7.0/apache2/conf.d/20-pdo_sqlsrv.ini            
# cp /etc/php/7.2/cli/conf.d/20-sqlsrv.ini /etc/php/7.2/fpm/conf.d/20-sqlsrv.ini  
# cp /etc/php/7.2/cli/conf.d/20-pdo_sqlsrv.ini /etc/php/7.2/fpm/conf.d/20-pdo_sqlsrv.ini

verifica que se registren los drivers en el php.ini, sugiero usar phpinfo() para ver este tema, ademas usar el locate para buscar donde se crearon los drivers. aun no se como ponerlo en las versiones viejitas de php, pero con paciencia lo logras instalar en el php7.2.
suerte

Hola estoy tratando de hacer esto mismo pero con xampp en mi ubuntu y no logro conseguirlo, ya instale con la herramienta de pecl los 2 drivers, que tengo en la version
pdo_sqlsrv 5.6.0 stable
sqlsrv 5.6.0 stable

y en mi archivo php.ini e habilitado las lineas para que las extensiones se usen, asi:
extension=sqlsrv.so
extension=pdo_sqlsrv.so

pero en el phpinfo no me sale ese driver instalado, y tambien cada vez que hago un comando de php me sale estos errores
Warning: PHP Startup: Unable to load dynamic library 'sqlsrv.so' (tried: /opt/lampp/lib/php/extensions/no-debug-non-zts-20180731/sqlsrv.so (/opt/lampp/lib/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /opt/lampp/lib/php/extensions/no-debug-non-zts-20180731/sqlsrv.so)), /opt/lampp/lib/php/extensions/no-debug-non-zts-20180731/sqlsrv.so.so (/opt/lampp/lib/php/extensions/no-debug-non-zts-20180731/sqlsrv.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library 'pdo_sqlsrv.so' (tried: /opt/lampp/lib/php/extensions/no-debug-non-zts-20180731/pdo_sqlsrv.so (/opt/lampp/lib/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /opt/lampp/lib/php/extensions/no-debug-non-zts-20180731/pdo_sqlsrv.so)), /opt/lampp/lib/php/extensions/no-debug-non-zts-20180731/pdo_sqlsrv.so.so (/opt/lampp/lib/php/extensions/no-debug-non-zts-20180731/pdo_sqlsrv.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
no comprendo lo que pasa o que debo hacer de mas, saludos

intenta esto, lo he usado en el Homestead

# vagrant box add laravel/homestead --box-version 6.4.0

sudo su 
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -

Ubuntu 18.04
curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list

exit
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install msodbcsql17
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y apt-get install mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo apt-get install unixodbc-dev


pecl search sqlsrv
sudo apt-get install php7-dev
sudo pecl install sqlsrv-5.5.0preview
sudo pecl install pdo_sqlsrv-5.5.0preview
# hasat aca el sqlsrv y pdo_sqlsrv estan instalados
#para ver donde se debe escribir /usr/bin/php7.2 --ini

# ahora, donde debemos escribir el archivo de configuracion??
# depende donde el phpinfo del sitio indique.
# por lo general puede ser con el comando  /usr/bin/php7.2 --ini
#sudo su

#echo extension=sqlsrv.so >/etc/php/7.2/cli/conf.d/20-sqlsrv.ini
#echo extension=pdo_sqlsrv.so >/etc/php/7.2/cli/conf.d/20-pdo_sqlsrv.ini
#apache2
#echo extension=sqlsrv.so >/etc/php/7.2/apache2/conf.d/20-sqlsrv.ini
#echo extension=pdo_sqlsrv.so >/etc/php/7.2/apache2/conf.d/20-pdo_sqlsrv.ini

#para el nginx 7.2
#echo extension=sqlsrv.so >/etc/php/7.2/fpm/conf.d/20-sqlsrv.ini
#echo extension=pdo_sqlsrv.so >/etc/php/7.2/fpm/conf.d/20-pdo_sqlsrv.ini

#/usr/bin/php7.2 -m

# reiniciar servidor

para ver el PHP info:

sudo -s
echo '<?php phpinfo();' > /opt/lampp/htdocs/info.php

como indica aca,
http://alexpereap.com/es/blog/como-instalar-xampp-en-ubuntu-1604
la idea es saber donde debe escribirse el archivo de configuracion del driver

echo extension=sqlsrv.so >/etc/php/7.2/apache2/conf.d/20-sqlsrv.ini

debes tener en cuenta que el driver no es como en windows un dll portable, en linux el comando de instalacion

sudo pecl install sqlsrv-5.5.0preview
sudo pecl install pdo_sqlsrv-5.5.0preview

copila para linux el driver cada vez.

segun indica en este post
https://github.com/Microsoft/msphpsql/issues/736
sugiere que desinstales y vuelvas a instalar.

para ver el PHP info:

sudo -s
echo '<?php phpinfo();' > /opt/lampp/htdocs/info.php

como indica aca,
http://alexpereap.com/es/blog/como-instalar-xampp-en-ubuntu-1604
la idea es saber donde debe escribirse el archivo de configuracion del driver

echo extension=sqlsrv.so >/etc/php/7.2/apache2/conf.d/20-sqlsrv.ini

debes tener en cuenta que el driver no es como en windows un dll portable, en linux el comando de instalacion

sudo pecl install sqlsrv-5.5.0preview
sudo pecl install pdo_sqlsrv-5.5.0preview

copila para linux el driver cada vez.

segun indica en este post
https://github.com/Microsoft/msphpsql/issues/736
sugiere que desinstales y vuelvas a instalar.

Ya pude instalarlo en mi ubuntu xampp, ac谩 tengo la gu铆a de como hice para que me funcionara
https://es.stackoverflow.com/a/240792/2770

para ver el PHP info:

sudo -s
echo '<?php phpinfo();' > /opt/lampp/htdocs/info.php

como indica aca,
http://alexpereap.com/es/blog/como-instalar-xampp-en-ubuntu-1604
la idea es saber donde debe escribirse el archivo de configuracion del driver

echo extension=sqlsrv.so >/etc/php/7.2/apache2/conf.d/20-sqlsrv.ini

debes tener en cuenta que el driver no es como en windows un dll portable, en linux el comando de instalacion

sudo pecl install sqlsrv-5.5.0preview
sudo pecl install pdo_sqlsrv-5.5.0preview

copila para linux el driver cada vez.

segun indica en este post
https://github.com/Microsoft/msphpsql/issues/736
sugiere que desinstales y vuelvas a instalar.

work well

Was this page helpful?
0 / 5 - 0 ratings