Skip to content
This repository has been archived by the owner on Dec 20, 2019. It is now read-only.

InstallFromSource

hrak edited this page Jul 26, 2012 · 3 revisions

Table of Contents

Installing from source

These steps help you compile eAccelerator on UNIX-like systems. eAccelerator has been reported to compile on Linux, FreeBSD, OpenBSD, Mac OS X, Solaris, AIX and HP-UX.

Requirements

 * php4 or php5
 * autoconf
 * automake 
 * libtool
 * m4

eAccelerator only works with mod_php or php in fastcgi mode. It can't be used in cgi or cli because eAccelerator needs to set up shared memory, and this can only be done when all php instances that need to access it are forks of the first process.

Installation

Step 1. Compiling eAccelerator

You need to run these commands in the eAccelerator source directory. eAccelerator supports multiple php branches so you need to bootstrap eAccelerator first. This can be done with the phpize script. It very important that you use the phpize script of the php version for which you want to compile eAccelerator. The phpize and php-config scripts are available in the development packages of your distro. For fedora this is php-devel, for debian php-dev, other distribution should be similar.

When you have only one php install, it's safe to run these commands in the source directory:

phpize
./configure 
make

The phpize and php-config are the ones that are in your path. When you have more then one php install or the phpize and php-config scripts aren't in your path then you should follow this procedure. This example has php installed in /opt/php, this is the path of the --prefix option given to the php configuration script.

export PHP_PREFIX="/opt/php"
$PHP_PREFIX/bin/phpize
./configure --enable-shared --with-php-config=$PHP_PREFIX/bin/php-config
make

For more information about the options for the configure script you should read the CompileConfiguration page.

After compilation, there should be a "eaccelerator.so" file in the modules subdirectory of the eAccelerator source directory.

Step 2. Installing eAccelerator

make install

This will copy the previously created eAccelerator binary to the php extension directory. When this command ends, it will print out the directory in which eAccelerator has been installed.

Step 3. Configuring eAccelerator

eAccelerator can be installed both as Zend or PHP extension. When you install eAccelerator as a zend_extension you need to give the full path to the eaccelerator.so library.

If you have /etc/php.d directory, you should copy eaccelerator.ini to it and modify the default values. If not, you need to edit your php.ini file (usually /etc/php.ini).

To install as Zend extension:

zend_extension="/usr/lib/php4/eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"

If you use a thread safe build of PHP you must use "zend_extension_ts" instead of "zend_extension".

To install as PHP extension:

extension="eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"

Step 4. Creating cache directory

One last very important step is creating the cache directory that you configured in the previous step. The default value is /tmp/eaccelerator It's easy because it's writable to everyone, but it isn't very smart because on a lot of systems this directory is cleaned on reboot. A better place would be /var/cache/eaccelerator. Create the directory and make sure it's writable for the user eAccelerator runs under (usually the user which you webserver runs as).

A safe bet is making it world writable. A safer and cleaner way would be to change the owner of the directory to the same user PHP runs as (most of the time the same user as Apache or Lighttpd) and set 0644 permissions.

The lazy way:

mkdir /tmp/eaccelerator
chmod 0777 /tmp/eaccelerator

Step 5. Checking if it works

You need to restart the webserver eAccelerator is running under. Usually this will be Apache, if using eAccelerator with Lighttpd and FastCGI, you need to kill the main PHP FastCGI server.

Verify if eAccelerator works