Last active
March 15, 2025 10:04
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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 |
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
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
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
GOD BLESS YOU GENTLEMEN
thank you so much
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
This thread is a lifesaver 🫶
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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