⚠️ Warning
PIE is still in early development. We welcome you to try this out, but please exercise caution when using PIE, as things may go wrong! If you do encounter issues, please do report an issue!
You will need PHP 8.1 or newer to run PIE, but PIE can install an extension to any installed PHP version.
If you are an extension maintainer wanting to add PIE support to your extension, please read extension-maintainers.
pie.phar
either:
gh attestation verify pie.phar --repo php/pie
php pie.phar <command>
Further installation details can be found in the usage docs.
This documentation assumes you have moved pie.phar
into your $PATH
, e.g.
/usr/local/bin/pie
on non-Windows systems.
A list of extensions that support PIE can be found on https://packagist.org/extensions.
You can install an extension using the install
command. For example, to
install the example_pie_extension
extension, you would run:
$ pie install example/example-pie-extension
This command may need elevated privileges, and may prompt you for your password.
You are running PHP 8.3.10
Target PHP installation: 8.3.10 nts, on Linux/OSX/etc x86_64 (from /usr/bin/php8.3)
Found package: example/example-pie-extension:1.0.1 which provides ext-example_pie_extension
phpize complete.
Configure complete.
Build complete: /tmp/pie_downloader_66e0b1de73cdb6.04069773/example-example-pie-extension-769f906/modules/example_pie_extension.so
Install complete: /usr/lib/php/20230831/example_pie_extension.so
You must now add "extension=example_pie_extension" to your php.ini
$
The full documentation for PIE can be found in usage docs.
pie.phar
from the latest releasesgh attestation verify pie.phar --repo php/pie
php pie.phar <command>
pie.phar
into your $PATH
, e.g. cp pie.phar /usr/local/bin/pie
$PATH
, you may then invoke PIE with pie <command>
This documentation assumes you have moved pie.phar
into your $PATH
, e.g.
/usr/local/bin/pie
on non-Windows systems.
Note that this does not verify any signatures, and you assume the risks in
running this, but this will put PIE into /usr/local/bin/pie
on a non-Windows
system:
sudo curl -L --output /usr/local/bin/pie https://github.com/php/pie/releases/latest/download/pie.phar && sudo chmod +x /usr/local/bin/pie
PIE is published as binary-only Docker image, so you can install it easily during your Docker build:
COPY --from=ghcr.io/php/pie:bin /pie /usr/bin/pie
Instead of bin
tag (which represents latest binary-only image) you can also use explicit version (in x.y.z-bin
format). Use GitHub registry to find available tags.
⁉️ Important
Binary-only images don't include PHP runtime so you can't use them for running PIE. This is just an alternative way of distributing PHAR file, you still need to satisfy PIE's runtime requirements on your own.
This is an example of how PIE could be used to install an extension inside a
Docker image. Note that, like Composer, you need something like unzip
, the
Zip extension, or git
to be
installed.
FROM php:8.4-cli
# Add the `unzip` package which PIE uses to extract .zip files
RUN export DEBIAN_FRONTEND="noninteractive"; \
set -eux; \
apt-get update; apt-get install -y --no-install-recommends unzip; \
rm -rf /var/lib/apt/lists/*
# Copy the pie.phar from the latest `:bin` release
COPY --from=ghcr.io/php/pie:bin /pie /usr/bin/pie
# Use PIE to install an extension...
RUN pie install asgrim/example-pie-extension
If the extension you would like to install needs additional libraries or other dependencies, then these must be installed beforehand too.
Running PIE requires PHP 8.1 or newer. However, you may still use PIE to install an extension for an older version of PHP.
Additionally to PHP, PIE requires the following tools to be available on your system in order to download, build and install extensions:
zip
extension enabled for the PHP version running PIE, or git
to
download the extension source codeautoconf
, automake
, libtool
, m4
, make
, and gcc
to build the extensionphp-config
and phpize
) to prepare the
extension for building.Also, each extension may have its own requirements, such as additional libraries.
On a Debian-based system, you may install the required tools with:
sudo apt-get install git autoconf automake libtool m4 make gcc
On a Red Hat-based system, you may install the required tools with:
sudo yum install git autoconf automake libtool m4 make gcc
On macOS, you may install the required tools with Homebrew:
brew install git autoconf automake libtool m4 make gcc
On Windows, extensions are typically distributed as precompiled binaries. Instead of building the extension yourself, it will be downloaded as DLL files and placed in the PHP extensions directory.
PIE has the ability to:
pie download ...
,pie build ...
,pie install ...
When installing an extension with PIE, you must use its Composer package name. You can find a list of PIE-compatible packages on https://packagist.org/extensions.
Once you know the extension name, you can install it with:
pie install <vendor>/<package>
# for example:
pie install xdebug/xdebug
This will install the Xdebug extension into the version of PHP that is used to invoke PIE, using whichever is the latest stable version of Xdebug compatible with that version of PHP.
If you are trying to install an extension for a different version of PHP, you
may specify this on non-Windows systems with the --with-php-config
option:
pie install --with-php-config=/usr/bin/php-config7.2 my/extension
On Windows, you may provide a path to the php
executable itself using the
--with-php-path
option. This is an example on Windows where PHP 8.1 is used
to run PIE, but we want to download the extension for PHP 8.3:
> C:\php-8.1.7\php.exe C:\pie.phar install --with-php-path=C:\php-8.3.6\php.exe example/example-pie-extension
You may also need to use the corresponding phpize
command for the target PHP
version, which can be specified with the --with-phpize-path
option:
pie install --with-phpize-path=/usr/bin/phpize7.2 my/extension
You may optionally specify a version constraint when using PIE to install an extension:
pie install <vendor>/<package>:<version-constraint>
If version-constraint
is given, try to install that version if it matches the
allowed versions. Version constraints are resolved using the same format as
Composer, along with the minimum stability.
^1.0
will install the latest stable and backwards-compatible version with
1.0.0
and above, according to semantic versioning.
See Composer docs for details.^2.3@beta
will install the latest beta and backwards-compatible version
with 2.3.0
and above (for example, 2.3.0-beta.3
).dev-main
will install the latest commit on the main
branch at the time
of command execution. This would not work with Windows, as there is no
release with Windows binaries.dev-main#07f454ad797c30651be8356466685b15331f72ff
will install the specific
commit denoted by the commit sha after #
, in this case the commit
07f454ad797c30651be8356466685b15331f72ff
would be installed. This would
not work with Windows, as there is no release with Windows binaries.If no version-constraint
is given, try to install any compatible latest and
stable version. PIE will always prefer stable versions.
When compiling extensions, some will need additional parameters passed to the
./configure
command. These would typically be to enable or disable certain
functionality, or to provide paths to libraries not automatically detected.
In order to determine what configure options are available for an extension,
you may use pie info <vendor>/<package>
which will return a list, such as:
Configure options:
--enable-some-functionality (whether to enable some additional functionality provided)
--with-some-library-name=? (Path for some-library)
The above example extension could then be installed with none, some, or all of the specified configure options, some examples:
pie install example/some-extension
pie install example/some-extension --enable-some-functionality
pie install example/some-extension --with-some-library-name=/path/to/the/lib
pie install example/some-extension --with-some-library-name=/path/to/the/lib --enable-some-functionality
PIE will automatically try to enable the extension by adding extension=...
or
zend_extension=...
in the appropriate INI file. If you want to disable this
behaviour, pass the --skip-enable-extension
flag to your pie install
command. The following techniques are used to attempt to enable the extension:
phpenmod
, if using the deb.sury.org distributiondocker-php-ext-enable
if using Docker's PHP imageIf none of these techniques work, or you used the --skip-enable-extension
flag, PIE will warn you that the extension was not enabled, and will note that
you must enable the extension yourself.
Sometimes you may want to install an extension from a package repository other than Packagist.org (such as Private Packagist), or from a local directory. Since PIE is based heavily on Composer, it is possible to use some other repository types:
pie repository:add [--with-php-config=...] path /path/to/your/local/extension
pie repository:add [--with-php-config=...] vcs https://github.com/youruser/yourextension
pie repository:add [--with-php-config=...] composer https://repo.packagist.com/your-private-packagist/
pie repository:add [--with-php-config=...] composer packagist.org
The repository:*
commands all support the optional --with-php-config
flag
to allow you to specify which PHP installation to use (for example, if you have
multiple PHP installations on one machine). The above added repositories can be
removed too, using the inverse repository:remove
commands:
pie repository:remove [--with-php-config=...] /path/to/your/local/extension
pie repository:remove [--with-php-config=...] https://github.com/youruser/yourextension
pie repository:remove [--with-php-config=...] https://repo.packagist.com/your-private-packagist/
pie repository:remove [--with-php-config=...] packagist.org
Note you do not need to specify the repository type in repository:remove
,
just the URL.
You can list the repositories for the target PHP installation with:
pie repository:list [--with-php-config=...]
Since PIE is a replacement for PECL, here is a comparison of the commands that you may be familiar with in PECL, with an approximate equivalent in PIE. Note that some concepts are different or omitted from PIE as they may simply be not applicable to the new tooling.
PECL | PIE |
---|---|
pecl build xdebug |
pie build xdebug/xdebug |
pecl bundle xdebug |
pie download xdebug/xdebug |
pecl channel-add channel.xml |
pie repository:add vcs https://github.com/my/extension |
pecl channel-alias |
|
pecl channel-delete channel |
pie repository:remove https://github.com/my/extension |
pecl channel-discover |
|
pecl channel-login |
|
pecl channel-logout |
|
pecl channel-update |
|
pecl clear-cache |
|
pecl config-create |
|
pecl config-get |
|
pecl config-help |
|
pecl config-set |
|
pecl config-show |
|
pecl convert |
|
pecl cvsdiff |
|
pecl cvstag |
|
pecl download xdebug |
pie download xdebug/xdebug |
pecl download-all |
|
pecl info xdebug |
pie info xdebug/xdebug |
pecl install xdebug |
pie install xdebug/xdebug |
pecl list |
pie show |
pecl list-all |
Visit Packagist Extension list |
pecl list-channels |
pie repository:list |
pecl list-files |
|
pecl list-upgrades |
|
pecl login |
|
pecl logout |
|
pecl makerpm |
|
pecl package |
Linux - just tag a release. Windows - use php/php-windows-builder action |
pecl package-dependencies |
|
pecl package-validate |
In your extension checkout: composer validate |
pecl pickle |
|
pecl remote-info xdebug |
pie info xdebug/xdebug |
pecl remote-list |
Visit Packagist Extension list |
pecl run-scripts |
|
pecl run-tests |
|
pecl search |
Visit Packagist Extension list |
pecl shell-test |
|
pecl sign |
|
pecl svntag |
|
pecl uninstall |
|
pecl update-channels |
|
pecl upgrade xdebug |
pie install xdebug/xdebug |
pecl upgrade-all |
Adding PIE support for your extension is relatively straightforward, and the flow is quite similar to adding a regular PHP package into Packagist.
composer.json
to your extensionThe first step to adding PIE support is adding a composer.json
to your
extension repository. Most of the typical fields are the same, with a few
notable exceptions:
type
MUST be either php-ext
for a PHP Module (this will be most
extensions), or php-ext-zend
for a Zend Extension.php-ext
section MAY exist.name
field) should follow
the usual Composer package name format, i.e. <vendor>/<package>
.type
fields.php-ext
definitionextension-name
The extension-name
SHOULD be specified, and must conform to the usual extension
name regular expression, which is defined in
\Php\Pie\ExtensionName::VALID_PACKAGE_NAME_REGEX.
If the extension-name
is not specified, the extension-name
will be derived
from the Composer package name, with the vendor prefix removed. For example,
given a composer.json
with:
{
"name": "myvendor/myextension"
}
The extension name would be derived as myextension
. The myvendor/
vendor
prefix is removed.
The extension-name
SHOULD NOT be prefixed with ext-
as is a convention in
Composer when using require
.
An example of extension-name
being used:
{
"name": "xdebug/xdebug",
"php-ext": {
"extension-name": "xdebug"
}
}
priority
priority
is currently not used, but will form part of the ini
filename to
control ordering of extensions, if the target platform uses it.
support-zts
and support-nts
Indicates whether the extension supports Zend Thread-Safe (ZTS) and non-Thread-
Safe (NTS) modes. Both these flags default to true
if not specified, but if
your extension does not support either mode, it should be specified, and will
mean the extension will not be installable on the target platform.
Theoretically, it is possible to specify false
for both support-zts
and
support-nts
, but this will mean your package cannot be installed anywhere, so
is not advisable.
configure-options
This is a list of parameters that may be passed to the ./configure
command.
Each item of the list is a JSON object with:
name
, the parameter name itselfdescription
, a helpful description of what the parameter doesneeds-value
, a boolean to tell PIE whether the parameter is a
simple flag (typically used for --enable-this-flag
type parameters), or if
the parameter should have a value specified (typically used for
--with-library-path=...
type parameters, where a value must be given by
the end user)When an end user is installing an extension with PIE, they may specify any
defined configure-options
that are passed to ./configure
. For example, if
an extension defines the following composer.json
:
{
"name": "myvendor/myext",
"php-ext": {
"extension-name": "myext",
"configure-options": [
{
"name": "enable-my-flag",
"description": "Should my flag be enabled",
"needs-value": false
},
{
"name": "with-some-lib",
"description": "Specify the path to some-lib",
"needs-value": true
}
]
}
}
Then the pie build
or pie install
commands may be invoked in the following
ways to achieve the desired configuration:
pie install myvendor/myext
./configure
without any parameterspie install myvendor/myext --enable-my-flag
./configure --enable-my-flag
pie install myvendor/myext --with-some-lib=/path/to/somelib
./configure --with-some-lib=/path/to/somelib
pie install myvendor/myext --enable-my-flag --with-some-lib=/path/to/somelib
./configure --enable-my-flag --with-some-lib=/path/to/somelib
Note that it is not possible for end users of PIE to specify configuration
options that have not been defined in your extension's configure-options
definition. Using the same example above composer.json
, invoking PIE with
an invalid option, such as pie install myvendor/myext --something-else
will
result in an error The "--something-else" option does not exist.
.
If an end user does not specify a flag defined in the configure-options
definition, it will simply not be passed to ./configure
. There is no way to
specify a default value in the configure-options
definition.
build-path
The build-path
setting may be used if your source code is not in the root
of your repository. For example, if your repository structure is like:
/
docs/
src/
config.m4
config.w32
myext.c
...etc
In this case, the actual extension source code would be built in src/
, so you
should specify this path in build-path
, for example:
{
"name": "myvendor/myext",
"php-ext": {
"extension-name": "myext",
"build-path": "src"
}
}
Extension authors may define some dependencies in require
, but practically,
most extensions would not need to define dependencies. Dependencies on other
extensions may be defined, for example ext-json
. However, dependencies on
a regular PHP package (such as monolog/monolog
) are ignored when requesting
an installation of an extension with PIE.
It is worth noting that if your extension does define a dependency on another dependency, this would prevent installation of the extension, and at the moment the messaging around this is not particularly clear.
Once you have committed your composer.json
to your repository, you may then
submit it to Packagist in the same way as any other package.
In order to support Windows users, you must publish pre-built DLLs, as PIE does not currently support building DLLs on the fly. The expected workflow for Windows-compatible releases is:
The name of the ZIP file, and the DLL contained within must be:
php_{extension-name}-{tag}-{php-maj/min}-{ts|nts}-{compiler}-{arch}.zip
php_xdebug-3.3.2-8.3-ts-vs16-x86_64.zip
The descriptions of these items:
extension-name
the name of the extension, e.g. xdebug
tag
for example 3.3.0alpha3
- defined by the tag/release you have madephp-maj/min
- for example 8.3
for PHP 8.3.*compiler
- usually something like vc6
, vs16
- fetch from
'PHP Extension Build' flags in php -i
ts|nts
- Thread-safe or non-thread safe.arch
- for example x86_64
.
Architecture
from php -i
PHP_INT_SIZE
- 4 for 32-bit, 8 for 64-bit.The pre-built ZIP should contain at minimum a DLL named in the same way as the
ZIP itself, for example
php_{extension-name}-{tag}-{php-maj/min}-{ts|nts}-{compiler}-{arch}.dll
.
The .dll
will be moved into the PHP extensions path, and renamed, e.g.
to C:\path\to\php\ext\php_{extension-name}.dll
. The ZIP file may include
additional resources, such as:
php_{extension-name}-{tag}-{php-maj/min}-{ts|nts}-{compiler}-{arch}.pdb
-
this will be moved alongside the C:\path\to\php\ext\php_{extension-name}.dll
*.dll
- any other .dll
would be moved alongside C:\path\to\php\php.exe
C:\path\to\php\extras\{extension-name}\.
PHP provides a set of GitHub Actions that enable extension maintainers to build and release the Windows compatible assets. An example workflow that uses these actions:
name: Publish Windows Releases
on:
release:
types: [published]
permissions:
contents: write
jobs:
get-extension-matrix:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.extension-matrix.outputs.matrix }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Get the extension matrix
id: extension-matrix
uses: php/php-windows-builder/extension-matrix@v1
build:
needs: get-extension-matrix
runs-on: ${{ matrix.os }}
strategy:
matrix: ${{fromJson(needs.get-extension-matrix.outputs.matrix)}}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Build the extension
uses: php/php-windows-builder/extension@v1
with:
php-version: ${{ matrix.php-version }}
arch: ${{ matrix.arch }}
ts: ${{ matrix.ts }}
release:
runs-on: ubuntu-latest
needs: build
if: ${{ github.event_name == 'release' }}
steps:
- name: Upload artifact to the release
uses: php/php-windows-builder/release@v1
with:
release: ${{ github.event.release.tag_name }}
token: ${{ secrets.GITHUB_TOKEN }}
Since Packagist is the new home for PIE packages, the full list of supported, PIE-compatible extensions can be found on:
The process for adding support for PIE is documented in the Extension Maintainers documentation.
The PECL repository still has a whole host of extensions that have not yet added support for PIE. This is a list of extensions hosted on PECL, and their status for adding PIE support. If you spot some out of date information here, please do submit a Pull Request.
PECL Extension | Status |
---|---|
ahocorasick | ? |
amfext | ❌ Abandoned |
amqp | ⏰ PR: php-amqp/php-amqp#584 |
AOP | ? |
ApacheAccessor | ? |
APC | ❌ Abandoned |
APCu | ✅ Supported: apcu/apcu |
apcu_bc | ? |
apd | ❌ Abandoned |
apfd | ? |
APM | ? |
apn | ❌ Abandoned |
archive | ❌ Abandoned |
ares | ❌ Abandoned |
ast | ? |
augeas | ? |
automap | ❌ Abandoned |
awscrt | ? |
axis2 | ❌ Abandoned |
base58 | ? |
bbcode | ❌ Abandoned |
bcompiler | ❌ Abandoned |
big_int | ❌ Abandoned |
binpack | ❌ Abandoned |
Bitset | ? |
BLENC | ❌ Abandoned |
bloomy | ? |
brotli | ? |
bsdiff | ? |
bz2 | ❌ Core - see php/pie#133 |
bz2_filter | ? |
cairo | ❌ Abandoned |
cairo_wrapper | ? |
cassandra | ? |
chdb | ❌ Abandoned |
classkit | ❌ Abandoned |
cld | ? |
clips | ? |
clucene | ? |
cmark | ? |
coin_acceptor | ❌ Abandoned |
colorer | ❌ Abandoned |
componere | ? |
couchbase | ? |
courierauth | ? |
crack | ❌ Abandoned |
crack_dll | ? |
crypto | ? |
CSV | ? |
CUBRID | ? |
cvsclient | ? |
cybercash | ❌ Abandoned |
cybermut | ? |
cyrus | ❌ Abandoned |
datadog_trace | ? |
date_time | ❌ Core - see php/pie#133 |
dazuko | ? |
dbase | ? |
DBDO | ❌ Abandoned |
dbplus | ❌ Abandoned |
DBus | ❌ Abandoned |
dbx | ❌ Abandoned |
decimal | ? |
dio | ✅ Supported: pecl/dio |
docblock | ? |
dom_varimport | ❌ Abandoned |
doublemetaphone | ? |
drizzle | ❌ Abandoned |
Druid | ? |
ds | ? |
dtrace | ❌ Core - see php/pie#133 |
ecasound | ? |
ecma_intl | ? |
eio | ? |
enchant | ❌ Abandoned |
env | ? |
esmtp | ? |
ev | ? |
event | ? |
excimer | ? |
expect | ? |
fam | ❌ Abandoned |
fann | ? |
ffi | ❌ Abandoned |
Fileinfo | ❌ Core - see php/pie#133 |
filter | ❌ Core - see php/pie#133 |
framegrab | ? |
FreeImage | ❌ Abandoned |
fribidi | ❌ Abandoned |
funcall | ❌ Abandoned |
functional | ? |
fuse | ❌ Abandoned |
GDChart | ❌ Abandoned |
gearman | ? |
gender | ? |
geoip | ? |
geospatial | ? |
gmagick | ? |
gnupg | ? |
graphdat | ? |
gRPC | ? |
gupnp | ❌ Abandoned |
handlebars | ? |
haru | ❌ Abandoned |
hash | ❌ Core - see php/pie#133 |
hdr_histogram | ⏰ Coming soon: beberlei/hdrhistogram |
hidef | ❌ Abandoned |
hprose | ? |
hrtime | ? |
html_parse | ❌ Abandoned |
htscanner | ❌ Abandoned |
http_message | ? |
huffman | ❌ Abandoned |
ibm_db2 | ? |
ice | ? |
id3 | ❌ Abandoned |
idn | ? |
igbinary | ? |
imagick | ⏰ PR: Imagick/imagick#688 |
imap | ? |
imlib2 | ❌ Abandoned |
immutable_cache | ? |
IMS | ? |
inclued | ❌ Abandoned |
ingres | ❌ Abandoned |
inotify | ✅ Supported: arnaud-lb/inotify |
intercept | ? |
intl | ❌ Core - see php/pie#133 |
ion | ? |
ip2location | ? |
ip2proxy | ? |
ircclient | ❌ Abandoned |
isis | ? |
jsmin | ? |
json | ❌ Core - see php/pie#133 |
json_post | ? |
jsonc | ? |
jsond | ❌ Core - see php/pie#133 |
jsonnet | ? |
jsonpath | ? |
Judy | ❌ Abandoned |
kadm5 | ❌ Abandoned |
krb5 | ? |
KTaglib | ❌ Abandoned |
lapack | ❌ Abandoned |
lchash | ❌ Abandoned |
leveldb | ? |
libevent | ❌ Abandoned |
libsodium | ? |
lua | ? |
LuaSandbox | ? |
lzf | ? |
mailparse | ? |
markdown | ? |
maxdb | ❌ Abandoned |
maxminddb | ? |
mcrypt | ⏰ PR: php/pecl-encryption-mcrypt#20 |
mcrypt_filter | ? |
mcve | ❌ Abandoned |
mdbtools | ❌ Abandoned |
memcache | ⏰ PR: websupport-sk/pecl-memcache#116 |
memcached | ⏰ PR php-memcached-dev/php-memcached#560 was merged, but not yet added to Packagist |
memoize | ? |
memprof | ✅ Supported: arnaud-lb/memprof |
memsession | ❌ Abandoned |
memtrack | ❌ Abandoned |
meta | ? |
mnogosearch | ❌ Abandoned |
mogilefs | ? |
Molten | ? |
mongo | ❌ Abandoned |
mongodb | ✅ Supported: mongodb/mongodb-extension |
mono | ❌ Abandoned |
Mosquitto | ? |
mqseries | ? |
msgpack | ? |
mustache | ? |
mysql | ❌ Core - see php/pie#133 |
mysql_xdevapi | ? |
mysqlnd_azure | ? |
mysqlnd_krb | ? |
mysqlnd_memcache | ❌ Abandoned |
mysqlnd_ms | ❌ Abandoned |
mysqlnd_ngen | ❌ Abandoned |
mysqlnd_qc | ❌ Abandoned |
mysqlnd_uh | ❌ Abandoned |
namazu | ? |
ncurses | ❌ Abandoned |
Net_Gopher | ❌ Abandoned |
netools | ❌ Abandoned |
newt | ❌ Abandoned |
nsq | ? |
oauth | ? |
ocal | ? |
oci8 | ? |
odbtp | ❌ Abandoned |
oggvorbis | ❌ Abandoned |
openal | ? |
opencensus | ? |
opendirectory | ❌ Abandoned |
opengl | ? |
openswoole | ? |
opentelemetry | ? |
operator | ❌ Abandoned |
optimizer | ❌ Abandoned |
orng | ❌ Abandoned |
PAM | ? |
panda | ❌ Abandoned |
Paradox | ❌ Abandoned |
parallel | ? |
params | ? |
parle | ? |
Parse_Tree | ❌ Abandoned |
parsekit | ❌ Abandoned |
pcov | ✅ Supported: pecl/pcov |
pcs | ? |
pcsc | ? |
pdflib | ❌ Abandoned |
PDO | ❌ Core - see php/pie#133 |
PDO_4D | ❌ Abandoned |
PDO_CUBRID | ? |
PDO_DBLIB | ❌ Core - see php/pie#133 |
PDO_FIREBIRD | ❌ Core - see php/pie#133 |
PDO_IBM | ? |
PDO_IDS | ❌ Possibly abandoned - gives a 404 on PECL |
PDO_MYSQL | ❌ Core - see php/pie#133 |
PDO_OCI | ? |
PDO_ODBC | ❌ Core - see php/pie#133 |
PDO_PGSQL | ❌ Core - see php/pie#133 |
PDO_SQLANYWHERE | ? |
PDO_SQLITE | ❌ Core - see php/pie#133 |
pdo_sqlsrv | ? |
PDO_TAOS | ? |
pdo_user | ❌ Abandoned |
PECL_Gen | ❌ Abandoned |
pecl_http | ? |
perforce | ? |
perl | ❌ Abandoned |
Phalcon | ? |
phar | ❌ Core - see php/pie#133 |
phdfs | ❌ Abandoned |
PHK | ❌ Abandoned |
php_trie | ? |
phpy | ? |
pinpoint_php | ? |
PKCS11 | ? |
pledge | ? |
POP3 | ❌ Abandoned |
pq | ? |
proctitle | ❌ Abandoned |
propro | ? |
protobuf | ? |
protocolbuffers | ❌ Abandoned |
ps | ? |
pspell | ? |
psr | ? |
pthreads | ❌ Abandoned |
python | ❌ Abandoned |
qb | ❌ Abandoned |
qqwry | ? |
quickhash | ? |
radius | ? |
raphf | ? |
rar | ? |
rdkafka | ✅ Supported: rdkafka/rdkafka |
re2 | ❌ Abandoned |
redis | ✅ Supported: phpredis/phpredis |
ref | ? |
request | ? |
riak | ❌ Abandoned |
rnp | ? |
rpminfo | ✅ Supported: remi/rpminfo |
rpmreader | ❌ Abandoned |
rrd | ? |
rsvg | ❌ Abandoned |
rsync | ❌ Abandoned |
runkit | ❌ Abandoned |
runkit7 | ? |
sam | ❌ Abandoned |
sandbox | ? |
sasl | ? |
scoutapm | ? |
scream | ❌ Abandoned |
scrypt | ? |
sdl | ? |
sdl_image | ? |
sdl_mixer | ? |
sdl_ttf | ? |
sdo | ❌ Possibly abandoned - gives a 404 on PECL |
SeasClick | ? |
SeasLog | ? |
SeasSnowflake | ? |
selinux | ✅ Supported: pecl/selinux |
shape | ? |
simdjson | ? |
simple_kafka_client | ? |
skywalking | ? |
skywalking_agent | ? |
smbclient | ? |
solr | ? |
sphinx | ❌ Abandoned |
spidermonkey | ❌ Abandoned |
SPL_Types | ❌ Abandoned |
spplus | ? |
spread | ? |
SQLite | ❌ Core - see php/pie#133 |
sqlite3 | ❌ Core - see php/pie#133 |
sqlsrv | ? |
ssdeep | ? |
ssh2 | ? |
stackdriver_debugger | ? |
statgrab | ? |
stats | ❌ Abandoned |
stem | ? |
stomp | ? |
strict | ❌ Abandoned |
sundown | ❌ Abandoned |
svm | ? |
svn | ? |
swish | ❌ Abandoned |
swoole | ? |
swoole_serialize | ? |
syck | ? |
sync | ? |
taint | ? |
tcc | ? |
TCLink | ? |
tcpwrap | ? |
tdb | ? |
teds | ? |
Tensor | ? |
termbox | ? |
TextCat | ? |
tidy | ❌ Abandoned |
timecop | ? |
timezonedb | ⏰ PR: php/pecl-datetime-timezonedb#12 |
tk | ❌ Abandoned |
tokyo_tyrant | ❌ Abandoned |
trace | ? |
trader | ? |
translit | ? |
tvision | ? |
txforward | ❌ Abandoned |
udis86 | ❌ Abandoned |
ui | ? |
uopz | ? |
uploadprogress | ? |
uri_template | ❌ Abandoned |
uuid | ✅ Supported: pecl/uuid |
uv | ? |
v8 | ? |
v8js | ? |
Valkyrie | ❌ Abandoned |
var_representation | ? |
varnish | ? |
vips | ? |
vld | ? |
vpopmail | ❌ Abandoned |
wasm | ? |
wbxml | ❌ Abandoned |
Weakref | ❌ Abandoned |
weakreference_bc | ? |
win32ps | ❌ Abandoned |
win32ps_dll | ❌ Abandoned |
win32service | ? |
win32std | ❌ Abandoned |
WinBinder | ? |
WinCache | ? |
wxwidgets | ❌ Abandoned |
xattr | ? |
xcommerce | ❌ Abandoned |
Xdebug | ✅ Supported: xdebug/xdebug |
xdiff | ? |
xhprof | ? |
xlswriter | ? |
xmldiff | ? |
xmlReader | ❌ Core - see php/pie#133 |
xmlrpc | ❌ Abandoned |
XMLRPCi | ? |
xmlwriter | ❌ Core - see php/pie#133 |
xmms | ❌ Abandoned |
xmp | ❌ Abandoned |
xpass | ✅ Supported: remi/xpass |
xrange | ❌ Abandoned |
xslcache | ❌ Abandoned |
xxtea | ? |
yac | ? |
yaconf | ? |
Yaf | ? |
yami | ❌ Abandoned |
yaml | ⏰ PR: php/pecl-file_formats-yaml#88 |
yar | ? |
yaz | ? |
yp | ? |
ZendOptimizerPlus | ❌ Possibly abandoned - gives a 404 on PECL |
zephir_parser | ? |
zeroconf | ? |
zip | ? |
zlib_filter | ? |
zmq | ❌ Abandoned |
zookeeper | ? |
zstd | ? |