Skip to content

Instantly share code, notes, and snippets.

@ethanclevenger91
Last active April 26, 2024 10:05
Show Gist options
  • Star 11 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save ethanclevenger91/8134ef434ec92d3d829be0b6beb714d9 to your computer and use it in GitHub Desktop.
Save ethanclevenger91/8134ef434ec92d3d829be0b6beb714d9 to your computer and use it in GitHub Desktop.
Install PHP SQLSRV database extension on Laravel Homestead (probably works as a Laravel Forge recipe, too). Thanks @richvida
#!/bin/sh
PHP_MSSQL_DRIVERS=Ubuntu18-7.3
PHP_MSSQL_RELEASE=5.6.1
# Download and extract phpmysql drivers
sudo wget "https://github.com/Microsoft/msphpsql/releases/download/v${PHP_MSSQL_RELEASE}/${PHP_MSSQL_DRIVERS}.tar" -O - | tar -x
# Change Directory
cd $PHP_MSSQL_DRIVERS
# Change owner/group
sudo chown root:root php_pdo_sqlsrv_73_nts.so
sudo chown root:root php_sqlsrv_73_nts.so
# Modify permissions
sudo chmod 644 php_pdo_sqlsrv_73_nts.so
sudo chmod 644 php_sqlsrv_73_nts.so
# Move files
sudo mv php_pdo_sqlsrv_73_nts.so /usr/lib/php/20170718
sudo mv php_sqlsrv_73_nts.so /usr/lib/php/20170718
# Cleanup
cd .. && sudo rm -rf $PHP_MSSQL_DRIVERS
# Create new .ini file
sudo touch /etc/php/7.3/mods-available/pdo_sqlsrv.ini
echo "extension=php_pdo_sqlsrv_73_nts.so" | sudo tee -a /etc/php/7.3/mods-available/pdo_sqlsrv.ini > /dev/null
# Create Symlinks
sudo ln -sfn /etc/php/7.3/mods-available/pdo_sqlsrv.ini /etc/php/7.3/cli/conf.d/20-pdo_sqlsrv.ini
sudo ln -sfn /etc/php/7.3/mods-available/pdo_sqlsrv.ini /etc/php/7.3/fpm/conf.d/20-pdo_sqlsrv.ini
# Enable PHP extension
echo "extension=php_sqlsrv_73_nts.so" | sudo tee -a /etc/php/7.3/cli/php.ini > /dev/null
echo "extension=php_sqlsrv_73_nts.so" | sudo tee -a /etc/php/7.3/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.3-fpm restart
sudo service nginx restart
@tonsoflaz2
Copy link

Great script! I just ran it and it worked as a Laravel Forge Recipe.

I made the following changes to make it work for Ubuntu 20.04 and Driver 5.9.1 and PHP 7.4

#!/bin/sh

PHP_MSSQL_DRIVERS=Ubuntu2004-7.4
PHP_MSSQL_RELEASE=5.9.0

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

# Change Directory
cd $PHP_MSSQL_DRIVERS

# Change owner/group
sudo chown root:root php_pdo_sqlsrv_74_nts.so
sudo chown root:root php_sqlsrv_74_nts.so
# Modify permissions
sudo chmod 644 php_pdo_sqlsrv_74_nts.so
sudo chmod 644 php_sqlsrv_74_nts.so

# Move files
sudo mv php_pdo_sqlsrv_74_nts.so /usr/lib/php/20190902
sudo mv php_sqlsrv_74_nts.so /usr/lib/php/20190902

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

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

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

# Enable PHP extension
echo "extension=php_sqlsrv_74_nts.so" | sudo tee -a /etc/php/7.4/cli/php.ini > /dev/null
echo "extension=php_sqlsrv_74_nts.so" | sudo tee -a /etc/php/7.4/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/20.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.4-fpm restart
sudo service nginx restart

@lionslair
Copy link

Great script! I just ran it and it worked as a Laravel Forge Recipe.

I made the following changes to make it work for Ubuntu 20.04 and Driver 5.9.1 and PHP 7.4

#!/bin/sh

PHP_MSSQL_DRIVERS=Ubuntu2004-7.4
PHP_MSSQL_RELEASE=5.9.0

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

# Change Directory
cd $PHP_MSSQL_DRIVERS

# Change owner/group
sudo chown root:root php_pdo_sqlsrv_74_nts.so
sudo chown root:root php_sqlsrv_74_nts.so
# Modify permissions
sudo chmod 644 php_pdo_sqlsrv_74_nts.so
sudo chmod 644 php_sqlsrv_74_nts.so

# Move files
sudo mv php_pdo_sqlsrv_74_nts.so /usr/lib/php/20190902
sudo mv php_sqlsrv_74_nts.so /usr/lib/php/20190902

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

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

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

# Enable PHP extension
echo "extension=php_sqlsrv_74_nts.so" | sudo tee -a /etc/php/7.4/cli/php.ini > /dev/null
echo "extension=php_sqlsrv_74_nts.so" | sudo tee -a /etc/php/7.4/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/20.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.4-fpm restart
sudo service nginx restart

Thank you worked for me

@SimonBarrettACT
Copy link

This works on Forge for PHP8.1

#!/bin/sh

PHP_MSSQL_DRIVERS=Ubuntu2004-8.1
PHP_MSSQL_RELEASE=5.10.0

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

# Change Directory
cd $PHP_MSSQL_DRIVERS

# Change owner/group
sudo chown root:root php_pdo_sqlsrv_81_nts.so
sudo chown root:root php_sqlsrv_81_nts.so
# Modify permissions
sudo chmod 644 php_pdo_sqlsrv_81_nts.so
sudo chmod 644 php_sqlsrv_81_nts.so

# Move files
sudo mv php_pdo_sqlsrv_81_nts.so /usr/lib/php/20210902
sudo mv php_sqlsrv_81_nts.so /usr/lib/php/20210902

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

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

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

# Enable PHP extension
echo "extension=php_sqlsrv_81_nts.so" | sudo tee -a /etc/php/8.1/cli/php.ini > /dev/null
echo "extension=php_sqlsrv_81_nts.so" | sudo tee -a /etc/php/8.1/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/20.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 php8.1-fpm restart
sudo service nginx restart

@voicecode-bv
Copy link

Updated version for PHP 8.2

#!/bin/sh
PHP_MSSQL_DRIVERS=Ubuntu2004-8.2
PHP_MSSQL_RELEASE=5.11.0

# Download and extract php mssql drivers
sudo wget "https://github.com/Microsoft/msphpsql/releases/download/v${PHP_MSSQL_RELEASE}/${PHP_MSSQL_DRIVERS}.tar" -O - | tar -x

# Change Directory
cd $PHP_MSSQL_DRIVERS

# Change owner/group
sudo chown root:root php_pdo_sqlsrv_82_nts.so
sudo chown root:root php_sqlsrv_82_nts.so

# Modify permissions
sudo chmod 644 php_pdo_sqlsrv_82_nts.so
sudo chmod 644 php_sqlsrv_82_nts.so

# Move files
sudo mv php_pdo_sqlsrv_82_nts.so /usr/lib/php/20220829
sudo mv php_sqlsrv_82_nts.so /usr/lib/php/20220829

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

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

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

# Enable PHP extension
echo "extension=php_sqlsrv_82_nts.so" | sudo tee -a /etc/php/8.2/cli/php.ini > /dev/null
echo "extension=php_sqlsrv_82_nts.so" | sudo tee -a /etc/php/8.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/20.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 php8.2-fpm restart
sudo service nginx restart

@mikeqci
Copy link

mikeqci commented May 7, 2023

GOD BLESS YOU GENTLEMEN

@haitt
Copy link

haitt commented Jan 23, 2024

thank you so much

@SimonBarrettACT
Copy link

SimonBarrettACT commented Mar 17, 2024

Updated for PHP 8.3

#!/bin/sh
PHP_MSSQL_DRIVERS=Ubuntu2004-8.3  # Update this based on available drivers
PHP_MSSQL_RELEASE=5.12.0  # Ensure this is the correct release for PHP version
PHP_DIR="/usr/lib/php/20230831" # Ensure correct directory

# Download and extract php mssql drivers
sudo wget "https://github.com/Microsoft/msphpsql/releases/download/v${PHP_MSSQL_RELEASE}/${PHP_MSSQL_DRIVERS}.tar" -O - | tar -x

# Change Directory
cd $PHP_MSSQL_DRIVERS

# Change owner/group
sudo chown root:root php_pdo_sqlsrv_83_nts.so  # Update file name for PHP version
sudo chown root:root php_sqlsrv_83_nts.so  # Update file name for PHP version

# Modify permissions
sudo chmod 644 php_pdo_sqlsrv_83_nts.so
sudo chmod 644 php_sqlsrv_83_nts.so

# Move files
sudo mv php_pdo_sqlsrv_83_nts.so $PHP_DIR
sudo mv php_sqlsrv_83_nts.so $PHP_DIR

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

# Create new .ini file
sudo touch /etc/php/8.3/mods-available/pdo_sqlsrv.ini  # Update path  for PHP version
echo "extension=php_pdo_sqlsrv_83_nts.so" | sudo tee -a /etc/php/8.3/mods-available/pdo_sqlsrv.ini > /dev/null  # Update file name  for PHP version

# Create Symlinks
sudo ln -sfn /etc/php/8.3/mods-available/pdo_sqlsrv.ini /etc/php/8.3/cli/conf.d/20-pdo_sqlsrv.ini  # Update file name  for PHP version
sudo ln -sfn /etc/php/8.3/mods-available/pdo_sqlsrv.ini /etc/php/8.3/fpm/conf.d/20-pdo_sqlsrv.ini  # Update file name  for PHP version

# Enable PHP extension
echo "extension=php_sqlsrv_83_nts.so" | sudo tee -a /etc/php/8.3/cli/php.ini > /dev/null  # Update file name  for PHP version
echo "extension=php_sqlsrv_83_nts.so" | sudo tee -a /etc/php/8.3/fpm/php.ini > /dev/null  # Update file name  for PHP version

# 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/20.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 php8.3-fpm restart # Update file name  for PHP version
sudo service nginx restart

@JessTwiss
Copy link

This thread is a lifesaver 🫶

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment