php-builder
php-builder copied to clipboard
:elephant: Build PHP 5.6 and newer
PHP Builder
- This projects builds PHP 8.0 and above (including a nightly build from the master branch of PHP) on
Ubuntu
andDebian
. - To install PHP, follow the instructions in the install section.
- To download a PHP build, refer to the builds section.
Contents
- OS Support
- Install
- Extensions
- JIT
- SAPI Support
- Builds
- Uninstall
- Related Projects
- License
- Dependencies
OS Support
- Ubuntu 18.04 (Bionic) amd64
- Ubuntu 20.04 (Focal) amd64
- Ubuntu 22.04 (Jammy) amd64
- Debian 10 (Buster) amd64
- Debian 11 (Bullseye) amd64
All other distributions based on the above operating systems will also be supported on best effort basis.
Install
- Fetch the installer:
curl -sSLO https://github.com/shivammathur/php-builder/releases/latest/download/install.sh
chmod a+x ./install.sh
- Then, to install
PHP 8.2
:
./install.sh 8.2
or, to install PHP 8.1
:
./install.sh 8.1
- Finally, test your PHP version:
php -v
Notes:
- All PHP versions have prefix
/usr
and the directory structure will be same as that of 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.
Extensions
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
phpdismod
and 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
-
PECL
is also installed along with PHP, so compatible extensions can also be installed using it. These will be enabled using thepecl.ini
module which is linked to all SAPIs.
pecl install <extension>
JIT
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_jit
script 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> disable
SAPI support
These SAPIs are installed by default:
-
apache2-handler
-
cli
-
cgi
-
embed
-
fpm
-
phpdbg
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
.
Builds
PHP 8.0
PHP 8.1
PHP 8.2.0-dev (PHP-8.2)
PHP 8.3.0-dev (master)
Uninstall
- 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.2
:
./install.sh --remove 8.2
or, to remove PHP 8.1
:
./install.sh --remove 8.1
Related Projects
License
The 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.