PECL Zip

Introduction to PECL Zip
PECL Zip is a PHP extension that allows PHP to create, modify, and read zip-format files.

The current version of PECL Zip works with PHP versions 4.3.0 or newer.

Installing PECL Zip
Please Note: The installation of PECL Zip requires Installing_PHP5 or Installing_PHP4.

If you are unable to meet this prerequisite, then you may not be able to use the PECL Zip module on your DreamHost account.

Below is the install script for the PECL Zip PHP module.

Please make sure to run 'dos2unix zip.sh' from the shell if you used a Windows-based editor to create this file.

zip.sh
set -e
 * 1) !/bin/sh


 * 1) Version 1.0, 2007-10-18
 * 2) - Initial Release (2007-10-18)
 * 1) - Initial Release (2007-10-18)

SRCDIR=${HOME}/source DISTDIR=${HOME}/dist DISTDEL="No" INSTALLDIR=${HOME}/php5 NICE=19
 * 1) User Configuration Options
 * 2) Temporary source directory
 * 1) Download temporary DIST files to which directory?
 * 1) Delete contents of DISTDIR after installation? (Default: Yes)
 * 1) Install Pecl-Zip to which directory?
 * 2) Note: This *MUST* be set to your PHP5 installation directory!
 * 1) Nice Level for Processes. (Depreciated)
 * 2) Higher is nicer, lower is less nice and could get your install process killed!

AUTOCONF="autoconf-2.61" AUTOMAKE="automake-1.10" ZIP="zip-1.8.10" ZIPFEATURES="--prefix=${INSTALLDIR}"
 * 1) Program Version Configuration
 * 2) Don't touch unless you know what you're doing!
 * 1) What features do you want enabled?


 * 1) END User Configuration Options

sleep 1s
 * 1) DO NOT MODIFY BELOW ##########

export PATH=${INSTALLDIR}/bin:$PATH
 * 1) Push the install dir's bin directory into the path

if [ -d ${SRCDIR} ]; then echo "Source directory already exists! Cleaning it..." rm -rf $SRCDIR/* else echo "Creating source directory..." mkdir -p ${SRCDIR} fi 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 if [ -d ${INSTALLDIR}/lib/php/extensions ]; then echo "lib/php/extensions folder already exists! Doing nothing..." else mkdir -p ${INSTALLDIR}/lib/php/extensions fi
 * 1) Clear and/or create the source directory.
 * 1) Create the dist files directory if it doesn't exist
 * 2) optionally cleaning it if it does exist already.
 * 1) Make sure the extensions directory exists.

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
 * 1) Detect how many processors the system has (for more optimal compliation).

for i in $sed wget; do		 $i --version >/dev/null 2>&1 done

cd ${DISTDIR} set +e WGETOPT="-t1 -T10 -w5 -q -c"
 * 1) Check if packages already exist and get packages the ones that don't.
 * 1) Do not abort on errors.
 * 1) Wget options

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 if [ -a ${DISTDIR}/${ZIP}.tgz ]; then echo "Skipping wget of ${ZIP}.tgz" else wget $WGETOPT ftp://ftp.ucsb.edu/pub/mirrors/linux/gentoo/distfiles/${ZIP}.tgz # If primary mirror fails, use the alternative mirror. if [ -a ${DISTDIR}/${ZIP}.tgz ]; then echo "Got ${ZIP}.tgz" else wget $WGETOPT http://pecl.php.net/get/${ZIP}.tgz # Check to make sure the alternative mirror worked. if [ -a ${DISTDIR}/${ZIP}.tgz ]; then echo "Got ${ZIP}.tgz" else echo "Failed to get ${ZIP}.tgz. Aborting install!" exit 0 fi fi fi
 * 1) Do some of our own error checking here too.

set -e

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." echo "Extracting ${ZIP}..." tar xzf ${DISTDIR}/${ZIP}.tgz > /dev/null echo "Done."
 * 1) Extract the source files into the source directory.

export PATH=${SRCDIR}/bin:$PATH export PHP_PREFIX=${INSTALLDIR}/bin
 * 1) Required exports

cd ${SRCDIR}/${AUTOCONF} ./configure --prefix=${SRCDIR} nice -n ${NICE} make make install
 * 1) Compile deps and install Pecl-Zip
 * 2) AUTOCONF
 * 1) make clean

cd ${SRCDIR}/${AUTOMAKE} ./configure --prefix=${SRCDIR} nice -n ${NICE} make make install
 * 1) AUTOMAKE
 * 1) make clean

cd ${SRCDIR}/${ZIP} $PHP_PREFIX/phpize ./configure ${ZIPFEATURES} nice -n ${NICE} make
 * ZIP
 * 1) make clean

cp modules/zip.so ${INSTALLDIR}/lib/php/extensions/zip.so cp modules/zip.la ${INSTALLDIR}/lib/php/extensions/zip.la
 * 1) Install Pecl-Zip now by copying the lib file over to the PHP extension dir.

sleep 2s cd ${HOME} && clear
 * 1) Post install clean-up.

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
 * 1) rm -rf $SRCDIR

echo "Installation completed!" `date +%r`
 * 1) End of Install


 * EOF

php.ini Modifications
Locate the following line(s) in your php.ini file: extension_dir = "./" Modify the extension_dir line to look like this, replacing username with the username of your account: extension_dir = "/home/username/php5/lib/php/extensions"
 * Directory in which the loadable extensions (modules) reside.
 * Directory in which the loadable extensions (modules) reside.

Now add the following near the very end of your current php.ini file.

[zip] extension="zip.so"