PECL PDO Mysql
From DreamHost
Contents |
Introduction to PECL PDO_MySQL
PDO_MYSQL provides a mysql driver for PDO. Some PHP applications require this, so it can be useful to enable on a custom PHP 5 installation.
Installing PECL PDO_MSYQL
| The instructions provided in this article or section are considered advanced. You are expected to be knowledgeable in the UNIX shell. |
Please Note: The installation of PECL pdo_mysql requires Installing_PHP5.
The default dreamhost PHP installation already has pdo_mysql, this is only for custom installations.
Below is the install script for the PECL pdo_mysql PHP module.
Please make sure to run 'dos2unix pdo_mysql.sh' from the shell if you used a Windows-based editor to create this file.
pdo_mysql.sh
#!/bin/sh
set -e
# Based off of the PECL Zip install script.
#### User Configuration Options
# Temporary source directory
SRCDIR=${HOME}/source
# Download temporary DIST files to which directory?
DISTDIR=${HOME}/dist
# Delete contents of DISTDIR after installation? (Default: Yes)
DISTDEL="No"
# Install to which directory?
# Note: This *MUST* be set to your PHP5 installation directory!
INSTALLDIR=${HOME}/php5
# Nice Level for Processes. (Depreciated)
# Higher is nicer, lower is less nice and could get your install process killed!
NICE=19
## Program Version Configuration
# Don't touch unless you know what you're doing!
AUTOCONF="autoconf-2.61"
AUTOMAKE="automake-1.10"
# What features do you want enabled?
PDOFEATURES="--prefix=${INSTALLDIR}"
set -e
#### END User Configuration Options
########## DO NOT MODIFY BELOW ##########
sleep 1s
# Push the install dir's bin directory into the path
export PATH=${INSTALLDIR}/bin:$PATH
# Clear and/or create the source directory.
if [ -d ${SRCDIR} ]; then
echo "Source directory already exists! Cleaning it..."
rm -rf $SRCDIR/*
else
echo "Creating source directory..."
mkdir -p ${SRCDIR}
fi
# Create the dist files directory if it doesn't exist
# optionally cleaning it if it does exist already.
if [ -d ${DISTDIR} ]; then
echo ""; echo "Distribution directory already exists!"; echo "Clean it?"
if [ ${DISTDEL} == "Yes" ]
then
echo ""; echo "Yes!"; echo "Cleaning now..."; echo ""
rm -rf $DISTDIR/*
else
echo ""; echo "No!"; echo "Leaving the distribution directory intact."; echo ""
fi
else
echo "Creating distribution directory..."
mkdir -p ${DISTDIR}
fi
# Make sure the extensions directory exists.
if [ -d ${INSTALLDIR}/lib/php/extensions ]; then
echo "lib/php/extensions folder already exists! Doing nothing..."
else
mkdir -p ${INSTALLDIR}/lib/php/extensions
fi
# Detect how many processors the system has (for more optimal compliation).
cores=2 # the number of cores/procs to use when building
if [ $cores -a $cores -gt 1 ]; then
j="-j$cores "
fi
OS=`uname -s`
if [ "Darwin" = $OS ]; then
sed=gnused
makefile=makefile.macosx
else
makefile=makefile.linux_x86_ppc_alpha
sed=sed
fi
for i in $sed wget; do
$i --version >/dev/null 2>&1
done
## Check if packages already exist and get packages the ones that don't.
cd ${DISTDIR}
# Do not abort on errors.
set +e
# Wget options
WGETOPT="-t1 -T10 -w5 -q -c"
# Do some of our own error checking here too.
if [ -a ${DISTDIR}/${AUTOCONF}.tar.gz ]; then
echo "Skipping wget of ${AUTOCONF}.tar.gz"
else
wget $WGETOPT ftp://ftp.ucsb.edu/pub/mirrors/linux/gentoo/distfiles/${AUTOCONF}.tar.gz
# If primary mirror fails, use the alternative mirror.
if [ -a ${DISTDIR}/${AUTOCONF}.tar.gz ]; then
echo "Got ${AUTOCONF}.tar.gz"
else
wget $WGETOPT ftp://ftp.gnu.org/gnu/autoconf/${AUTOCONF}.tar.gz
# Check to make sure the alternative mirror worked.
if [ -a ${DISTDIR}/${AUTOCONF}.tar.gz ]; then
echo "Got ${AUTOCONF}.tar.gz"
else
echo "Failed to get ${AUTOCONF}.tar.gz. Aborting install!"
exit 0
fi
fi
fi
if [ -a ${DISTDIR}/${AUTOMAKE}.tar.bz2 ]; then
echo Skipping wget of ${AUTOMAKE}.tar.bz2
else
wget $WGETOPT ftp://ftp.ucsb.edu/pub/mirrors/linux/gentoo/distfiles/${AUTOMAKE}.tar.bz2
# If primary mirror fails, use the alternative mirror.
if [ -a ${DISTDIR}/${AUTOMAKE}.tar.bz2 ]; then
echo "Got ${AUTOMAKE}.tar.bz2"
else
wget $WGETOPT ftp://ftp.gnu.org/gnu/automake/${AUTOMAKE}.tar.bz2
# Check to make sure the alternative mirror worked.
if [ -a ${DISTDIR}/${AUTOMAKE}.tar.bz2 ]; then
echo "Got ${AUTOMAKE}.tar.bz2"
else
echo "Failed to get ${AUTOMAKE}.tar.bz2. Aborting install!"
exit 0
fi
fi
fi
set -e
# Extract the source files into the source directory.
cd ${SRCDIR}
echo "Extracting ${AUTOCONF}..."
tar xzf ${DISTDIR}/${AUTOCONF}.tar.gz > /dev/null
echo "Done."
echo "Extracting ${AUTOMAKE}..."
tar xjf ${DISTDIR}/${AUTOMAKE}.tar.bz2 > /dev/null
echo "Done."
## Compile deps and install Pecl pdo_mysql
#AUTOCONF
cd ${SRCDIR}/${AUTOCONF}
./configure --prefix=${SRCDIR}
# make clean
nice -n ${NICE} make
make install
#AUTOMAKE
cd ${SRCDIR}/${AUTOMAKE}
./configure --prefix=${SRCDIR}
# make clean
nice -n ${NICE} make
make install
cd ${HOME}
echo "Downloading PDO_MYSQL..."
pecl download pdo_mysql
echo "Done."
echo "Extracting PDO_MYSQL..."
pecl bundle pdo_mysql
echo "Done"
# Required exports
export PATH=${SRCDIR}/bin:$PATH
export PHP_PREFIX=${INSTALLDIR}/bin
echo "Building PDO_MYSQL...."
cd ${HOME}/PDO_MYSQL
$PHP_PREFIX/phpize
./configure ${PDOFEATURES}
# make clean
nice -n ${NICE} make
echo "Done!"
# Copy the SO files
cp modules/pdo_mysql.so ${INSTALLDIR}/lib/php/extensions/pdo_mysql.so
cp modules/pdo_mysql.la ${INSTALLDIR}/lib/php/extensions/pdo_mysql.la
# Post install clean-up.
sleep 2s
cd ${HOME} && clear
#rm -rf $SRCDIR
if [ ${DISTDEL} == "Yes" ]; then
rm -rf $DISTDIR
elif [ ${DISTDEL} == "No" ]; then
echo "Your DISTDIR will not be cleaned."
else
echo "Unknown DISTDEL option! Cleaning your DISTDIR by default."
fi
## End of Install
echo "Installation completed!" `date +%r`
php.ini Modifications
Locate the following line(s) in your php.ini file:
; Directory in which the loadable extensions (modules) reside. extension_dir = "./"
Modify the extension_dir line to look like this, replacing username with the username of your account:
; Directory in which the loadable extensions (modules) reside. extension_dir = "/home/username/php5/lib/php/extensions"
Now add the following near the very end of your current php.ini file.
[pdo_mysql] extension="pdo_mysql.so"

