- This projects builds PHP 5.6 and above (including a nightly build from the master branch of PHP) on
UbuntuandDebian. - To install PHP, follow the instructions in the install section.
- To download a PHP build, refer to the builds section.
- OS Support
- Install
- Extensions
- JIT
- SAPI Support
- Builds
- Uninstall
- Related Projects
- License
- Dependencies
- Ubuntu 22.04 (Jammy) amd64
- Ubuntu 24.04 (Noble) amd64
- Debian 11 (Bullseye) amd64
- Debian 12 (Bookworm) amd64
All other distributions based on the above operating systems will also be supported on best effort basis.
- Fetch the installer:
curl -sSLO https://github.com/shivammathur/php-builder/releases/latest/download/install.sh
chmod a+x ./install.shThe installer takes the following options:
./install.sh <php-version> <release|debug> <nts|zts>The php-version is required, and release and nts are the defaults.
- release: No debugging symbols
- debug: With debugging symbols
- nts: Non Thread Safe
- zts: Thread Safe
- To install
PHP 8.4without debugging symbols and non thread safe:
./install.sh 8.4- or, to install
PHP 8.4with debugging symbols and thread safe:
./install.sh 8.4 debug zts- Finally, test your PHP version:
php -vNotes:
- All PHP versions have the prefix
/usrand the directory structure will be same as that of the official Debian builds. - Any pre-existing extensions INI configuration for the PHP version will be removed upon installation.
- The installer will switch to the PHP version you installed.
Expand to check the extensions installed along with PHP.
amqp,apcu,ast,bcmath,bz2,calendar,Core,ctype,curl,date,dba,dom,ds,enchant,exif,FFI,fileinfo,filter,ftp,gd,gettext,gmp,hash,iconv,igbinary,imagick,imap,intl,json,ldap,libxml,mbstring,memcache,memcached,mongodb,msgpack,mysqli,mysqlnd,odbc,openssl,pcntl,pcov,pcre,PDO,pdo_dblib,PDO_Firebird,pdo_mysql,PDO_ODBC,pdo_pgsql,pdo_sqlite,pdo_sqlsrv,pgsql,Phar,posix,pspell,readline,redis,Reflection,session,shmop,SimpleXML,soap,sockets,sodium,SPL,sqlite3,sqlsrv,standard,sysvmsg,sysvsem,sysvshm,tidy,tokenizer,xdebug,xml,xmlreader,xmlwriter,xsl,zip,zlib,Xdebug,Zend OPcache
-
Extension PCOV is disabled by default as Xdebug is enabled.
-
You can switch to PCOV by disabling Xdebug using
phpdismodand enabling it usingphpenmod.
phpdismod -v <ALL|php-version> -s <ALL|sapi-name> xdebug
phpenmod -v <ALL|php-version> -s <ALL|sapi-name> pcov-
More extensions can also be installed from
ppa:ondrej/php -
PECLis also installed along with PHP, so compatible extensions can also be installed using it. These will be enabled using thepecl.inimodule which is linked to all SAPIs.
pecl install <extension>PHP 8.0 and above versions have a JIT(Just-In-Time) compiler.
It is disabled by default, and can be enabled by the following steps:
- First, disable Xdebug and PCOV as they are not compatible with JIT.
phpdismod -v <ALL|php-version> -s <ALL|sapi-name> xdebug pcov- Then enable JIT using the
switch_jitscript for the same PHP versions and SAPIs.
switch_jit -v <ALL|php-version> -s <ALL|sapi-name> enable -m <jit_mode> -b <jit_buffer_size>If you do not specify -m or -b, the default for JIT mode is tracing, and for JIT buffer size it is 128M.
- If you get a warning about incompatible extensions, check if you installed any other third-party extensions which are incompatible with JIT.
To disable JIT:
switch_jit -v <php-version> -s <ALL|sapi-name> disableThese SAPIs are installed by default:
apache2-handlerclicgiembedfpmphpdbg
These SAPI:server configurations can be set up with the switch_sapi script:
apache:apache(apache2-handler with Apache)fpm:apache(php-fpm with Apache)cgi:apache(php-cgi with Apache)fpm:nginx(php-fpm with Nginx)
switch_sapi -v <php-version> -s <sapi|sapi:server>Note: When you run switch_sapi, the servers will have the default document root /var/www/html.
The following releases have nts and zts builds for the following PHP versions along with builds with and without debugging symbols.
- PHP 8.6.0-dev
- PHP 8.5.0-dev
- PHP 8.4.x
- PHP 8.3.x
- PHP 8.2.x
- PHP 8.1.x
- PHP 8.0.30
- PHP 7.4.33
- PHP 7.3.33
- PHP 7.2.34
- PHP 7.1.33
- PHP 7.0.33
- PHP 5.6.40
- Fetch the installer:
curl -sSLO https://github.com/shivammathur/php-builder/releases/latest/download/install.sh
chmod a+x ./install.sh- Then, to remove
PHP 8.4:
./install.sh --remove 8.4or, to remove PHP 8.3:
./install.sh --remove 8.3The scripts and documentation in this project are under the MIT license. This project has multiple dependencies. Their licenses can be found in their respective repositories.