#! /bin/bash ## PHP 7 Initial Compile ## ## Some help from the various places like these. ## # http://www.zimuel.it/install-php-7/ # http://www.hashbangcode.com/blog/compiling-and-installing-php7-ubuntu ## Setup Ubuntu 15.04/15.10 ## # Other dependencies for PHP 7. Add any missing ones from configure script # complaints, plus some LAMP needs too. sudo apt-get update sudo apt-get install libldap2-dev \ libldap-2.4-2 \ libtool-bin \ libzip-dev \ lbzip2 \ libxml2-dev \ bzip2 \ re2c \ libbz2-dev \ apache2-dev \ libjpeg-dev \ libxpm-dev \ libxpm-dev \ libgmp-dev \ libgmp3-dev \ libmcrypt-dev \ libmysqlclient-dev \ mysql-server \ mysql-common \ libpspell-dev \ librecode-dev \ libcurl4-gnutls-dev \ bison \ flex \ re2c \ libtool \ automake \ autoconf # PHP 7 does not recognize these without additional parameters or symlinks for # Ldap. sudo ln -sf /usr/lib/x86_64-linux-gnu/libldap.so /usr/lib/libldap.so sudo ln -sf /usr/lib/x86_64-linux-gnu/liblber.so /usr/lib/liblber.so sudo ln -sf /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.h # Obtain latest source if [ -x php-src ] then sudo rm -rf php-src fi git clone https://github.com/php/php-src cd php-src # Checkout latest release git checkout PHP-7.0.4 # Helped fix configure issues. ./buildconf --force # Setup compile options for Kubuntu 15.04. If failures occur, check dependencies # and symlink needs above. ./configure --prefix=/usr/local/php7 \ --with-config-file-path=/etc/php7/apache2 \ --with-config-file-scan-dir=/etc/php7/apache2/conf.d \ --enable-mbstring \ --enable-zip \ --enable-bcmath \ --enable-pcntl \ --enable-ftp \ --enable-exif \ --enable-calendar \ --enable-sysvmsg \ --enable-sysvsem \ --enable-sysvshm \ --enable-wddx \ --enable-intl \ --with-curl \ --with-mcrypt \ --with-iconv \ --with-gmp \ --with-pspell \ --with-gd \ --with-jpeg-dir=/usr \ --with-png-dir=/usr \ --with-zlib-dir=/usr \ --with-xpm-dir=/usr \ --with-freetype-dir=/usr \ --with-t1lib=/usr \ --enable-gd-native-ttf \ --enable-gd-jis-conv \ --with-openssl \ --with-pdo-mysql=/usr \ --with-gettext=/usr \ --with-zlib=/usr \ --with-bz2 \ --with-recode=/usr \ --with-apxs2=/usr/bin/apxs \ --with-mysqli=/usr/bin/mysql_config \ --with-ldap \ --with-xdebug # configure: WARNING: unrecognized options: --with-t1lib, --with-xdebug # Cleanup for previous failures. sudo make clean # Using as many threads as possible. sudo make -j `cat /proc/cpuinfo | grep processor | wc -l` # Install it accoridng to the configured path. sudo make install # It's own make script said to do this, but it didn't do much on my system. libtool --finish ./libs # Work on non-threaded version as compiled for now. sudo a2dismod mpm_worker sudo a2enmod mpm_prefork # Since it is built with axps2, it sets things up correctly. sudo a2dismod php5 ## To help enable Apache 2.4 use of PHP 7. Enable this after writing the file. ## /etc/apache2/mods-available/php7.conf sudo bash -c 'cat >/etc/apache2/mods-available/php7.conf' < SetHandler application/x-httpd-php SetHandler application/x-httpd-php-source # Deny access to raw php sources by default # To re-enable its recommended to enable access to the files # only in specific virtual host or directory Require all denied # Deny access to files without filename (e.g. .php) Require all denied # # Running PHP scripts in user directories is disabled by default # # To re-enable PHP in user directories comment the following lines # (from to .) Do NOT set it to On as it # prevents .htaccess files from disabling it. php_admin_flag engine Off # END EOL # Enable module sudo a2enmod php7 # Restart Apache if all went well. sudo systemctl restart apache2 # View any errors for Apache startup. printf "Any errors starting Apache2 with PHP7 can be seen with 'sudo journalctl -xe' .\n" # Update the paths on th system according to Ubuntu. Can be later removed and # switched back. sudo update-alternatives --install /usr/bin/php php /usr/local/php7/bin/php 50 \ --slave /usr/share/man/man1/php.1.gz php.1.gz \ /usr/local/php7/php/man/man1/php.1 # Choose your PHP version. printf "Select the version of PHP you want active in subsequent shells and the \ system:\n" sudo update-alternatives --config php