Skip to content

Precompiled Bulk PHP Binaries Don't Work with Composer or REPL #888

@Kenneth-Sills

Description

@Kenneth-Sills

I've downloaded and attempted to use a few of the pre-compiled binaries provided in the "Direct Download" section. But attempting to use them ends up having serious failures. I've tried three environments now: Debian, Arch, and a fresh Debian 12 container.

My two problems are:

  1. php -a cannot be used. It reports "Interactive shell (-a) requires the readline extension.
  2. composer cannot download packages. Curl times out (error 28), but only for HTTPS connections.
❯ ./php --version
PHP 8.4.12 (cli) (built: Sep  1 2025 03:10:49) (NTS gcc 14.2.0)
Copyright (c) The PHP Group
Built by static-php-cli 2.7.2
Zend Engine v4.4.12, Copyright (c) Zend Technologies
    with Zend OPcache v8.4.12, Copyright (c), by Zend Technologies

❯ ./php -a
Interactive shell (-a) requires the readline extension.

❯ ./php $(which composer) diagnose
Checking platform settings: OK
Checking git settings: OK git version 2.51.0
Checking http connectivity to packagist: OK
Checking https connectivity to packagist: A connection timeout was encountered. If you intend to run Composer without connecting to the internet, run the command again prefixed with COMPOSER_DISABLE_NETWORK=1 to make Composer run in offline mode.
FAIL
The following exception probably indicates you have misconfigured DNS resolver(s)
[Composer\Downloader\TransportException] curl error 28 while downloading https://repo.packagist.org/packages.json: Resolving timed out after 10000 milliseconds
Checking github.com rate limit: OK
Checking disk free space: OK
Checking pubkeys: FAIL
Missing pubkey for tags verification
Missing pubkey for dev verification
Run composer self-update --update-keys to set them up
Checking Composer version: OK
Checking Composer and its dependencies for vulnerabilities: OK
Composer version: 2.8.11
PHP version: 8.4.12
PHP binary path: REDACTED
OpenSSL version: OpenSSL 3.5.1 1 Jul 2025
curl version: 8.15.0 libz 1.3.1 brotli brotli/1.1.0 zstd missing ssl OpenSSL/3.5.1
zip: extension present, unzip present, 7-Zip not available

The bulk readme, extensions list, and library list all say readline is in there.

The latest action logs show readline is in the list and gets compiled in without issue. And PHP is convinced it's there (below is truncated for brevity):

❯ ./php -i
Build Provider => static-php-cli 2.7.3
Compiler => gcc 14.2.0
Configure Command =>  './configure'  '--prefix=' '--with-valgrind=no' '--disable-shared' '--enable-static' '--disable-all' '--disable-cgi' '--disable-phpdbg' '--enable-cli' '--enable-fpm' '--disable-embed' '--enable-micro=all-static' '--with-config-file-path=/usr/local/etc/php' '--with-config-file-scan-dir=/usr/local/etc/php/conf.d' '--enable-apcu' '--enable-bcmath' '--with-bz2=/app/buildroot' '--enable-calendar' '--enable-ctype' '--with-curl' '--enable-dba' '--enable-dom' '--with-zlib' '--with-zlib-dir=/app/buildroot' '--with-openssl=/app/buildroot' '--with-openssl-dir=/app/buildroot' '--with-event-core' '--with-event-extra' '--with-event-libevent-dir=/app/buildroot' '--with-event-openssl=/app/buildroot' '--enable-event-sockets' '--enable-exif' '--enable-fileinfo' '--enable-filter' '--enable-ftp' '--enable-gd' '--with-freetype' '--with-jpeg' '--with-webp' '--with-gmp=/app/buildroot' '--with-iconv=/app/buildroot' '--with-imagick=/app/buildroot' 'ac_cv_func_omp_pause_resource_all=no' '--with-imap=/app/buildroot' '--with-imap-ssl=/app/buildroot' '--enable-intl' '--enable-mbstring' '--enable-mbregex' '--with-mysqli' '--enable-opcache' '--enable-opcache-jit' '--enable-opentelemetry' '--enable-pcntl' '--enable-pdo' '--with-pdo-mysql' '--with-pgsql=/app/buildroot' '--enable-phar' '--enable-posix' '--enable-protobuf' '--without-libedit' '--with-readline=/app/buildroot' 'ac_cv_lib_readline_rl_pending_input=yes' '--enable-session' '--enable-redis' '--enable-redis-session' '--disable-redis-igbinary' '--disable-redis-msgpack' '--enable-shmop' '--enable-simplexml' '--enable-soap' '--with-sodium' '--with-sqlite3=/app/buildroot' '--enable-swoole' '--enable-swoole-coro-time' '--with-pic' '--disable-swoole-thread' '--enable-thread-context' '--enable-swoole-curl' '--enable-openssl' '--enable-cares' '--enable-brotli' '--with-brotli-dir=/app/buildroot' '--with-nghttp2-dir=/app/buildroot' '--enable-sockets' '--enable-swoole-pgsql' '--enable-mysqlnd' '--enable-swoole-sqlite' '--enable-sysvmsg' '--enable-sysvsem' '--enable-sysvshm' '--enable-tokenizer' '--enable-xml' '--enable-xmlreader' '--enable-xmlwriter' '--with-libxml=/app/buildroot' '--with-xsl=/app/buildroot' '--with-zip=/app/buildroot' 'PKG_CONFIG=/app/pkgroot/bin/pkg-config' 'PKG_CONFIG_PATH=/app/buildroot/lib/pkgconfig'

Readline Support => enabled
Readline library => 8.3

❯ ./php -n -m | grep -i readline
readline

❯ echo "<?php var_dump(get_loaded_extensions());" | ./php
array(61) {
  ...
  [42]=>
  string(8) "readline"
  ...
}

I've attempted the fixes listed here - though my issue with SSL seems slightly different - but to no avail. I've tried setting php.ini options to make sure everything was enabled anyway, but no dice there either.

I also downloaded the action artifacts from Github itself and ran locally, but the same issue persists.

All versions available seem to have this issue, from builds in 2024 to builds in 2025. Curiously, the 8.0.30 build has a separate issue that ./php -a has no error and, instead, simply locks up; same end result.

What's even more strange is that I can actually use readline from a script and it works fine:

❯ echo "<?php echo readline('TEST >'); " > index.php
❯ ./php index.php
TEST >hi
hi

I apologize if the issue with Composer and the issue with the REPL's readline should be separated - I'm only assuming they're related since both seem like prebuilt extension failures.

Reproduction Steps

curl -fSL https://dl.static-php.dev/static-php-cli/bulk/php-8.4.12-cli-linux-x86_64.tar.gz > php.tar.gz
tar xvf
./php -a

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingkind/php-and-sapiIssues related to php source and SAPIos/linuxThings only for Linux OS

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions