Skip to content

Instantly share code, notes, and snippets.

@chrishow
Created December 20, 2023 15:15
Show Gist options
  • Save chrishow/cb1895ae5d1a0d0c7735e8c6eebc5675 to your computer and use it in GitHub Desktop.
Save chrishow/cb1895ae5d1a0d0c7735e8c6eebc5675 to your computer and use it in GitHub Desktop.
Adding pdo_sqlsrv support to Homestead for PHP8.0
#!/bin/sh
PHP_MSSQL_DRIVERS=Ubuntu2004-8.0
PHP_MSSQL_RELEASE=5.11.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_88_nts.so
sudo chown root:root php_sqlsrv_80_nts.so
# Modify permissions
sudo chmod 644 php_pdo_sqlsrv_80_nts.so
sudo chmod 644 php_sqlsrv_80_nts.so
# Move files
sudo mv php_pdo_sqlsrv_80_nts.so /usr/lib/php/20200930
sudo mv php_sqlsrv_80_nts.so /usr/lib/php/20200930
# Cleanup
cd .. && sudo rm -rf $PHP_MSSQL_DRIVERS
# Create new .ini file
sudo touch /etc/php/8.0/mods-available/pdo_sqlsrv.ini
echo "extension=php_pdo_sqlsrv_80_nts.so" | sudo tee -a /etc/php/8.0/mods-available/pdo_sqlsrv.ini > /dev/null
# Create Symlinks
sudo ln -sfn /etc/php/8.0/mods-available/pdo_sqlsrv.ini /etc/php/8.0/cli/conf.d/20-pdo_sqlsrv.ini
sudo ln -sfn /etc/php/8.0/mods-available/pdo_sqlsrv.ini /etc/php/8.0/fpm/conf.d/20-pdo_sqlsrv.ini
# Enable PHP extension
echo "extension=php_sqlsrv_80_nts.so" | sudo tee -a /etc/php/8.0/cli/php.ini > /dev/null
echo "extension=php_sqlsrv_80_nts.so" | sudo tee -a /etc/php/8.0/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.0-fpm restart
sudo apachectl restart
@chrishow
Copy link
Author

Store this on the mapped folder and invoke it in Homestead/after.sh

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