Welcome to Centmin Mod Community
Become a Member

AlmaLinux EL9 + PHP 7.4/8.0: compat-openssl11-devel pinned to 1.1.1k-5.el9 blocks system updates

Discussion in 'Beta release code' started by wmtech, Oct 23, 2026 at 9:55 PM.

  1. wmtech

    wmtech Active Member

    192
    44
    28
    Jul 22, 2017
    Ratings:
    +145
    Local Time:
    8:02 AM
    EL9 + PHP 7.4/8.0: compat-openssl11-devel pinned to 1.1.1k-5.el9 blocks system updates and will break PHP rebuilds after AlmaLinux update to 1.1.1k-5.el9_8.6

    Environment
    • AlmaLinux 9, Centmin Mod 140.00beta01
    • PHP 8.0.30 built via Centmin Mod (Oct 21, 2026)
    Problem

    AlmaLinux AppStream now ships compat-openssl11-1:1.1.1k-5.el9_8.6. Centmin Mod installs compat-openssl11-devel-1.1.1k-5.el9 from its own mirror (centminmodparts/rpms/compat-openssl11/), and no AlmaLinux repo provides that package. Because the -devel package requires the exact same version of compat-openssl11, dnf update can’t update the library:


    Problem: cannot install both compat-openssl11-1:1.1.1k-5.el9_8.6.x86_64 from appstream and compat-openssl11-1:1.1.1k-5.el9.x86_64 from @System
    - package compat-openssl11-devel-1:1.1.1k-5.el9.x86_64 from @System requires compat-openssl11 = 1:1.1.1k-5.el9, but none of the providers can be installed

    Why removing the -devel package isn’t a workaround


    In inc/php_configure.inc, compile_custom_curl() forces PHP_CUSTOM_CURL='y' for EL9 with PHP 7.4/8.0 (lines ~116–120). It then runs this check (lines ~135–141):

    Code (Text):
    if ! rpm -q compat-openssl11 compat-openssl11-devel &>/dev/null; then
       dnf install -y "${BASE}/compat-openssl11-1.1.1k-5.el9.x86_64.rpm" \
                      "${BASE}/compat-openssl11-devel-1.1.1k-5.el9.x86_64.rpm" || return 1
    fi
    


    If a user removes the -devel package and updates the library, the next PHP rebuild tries to install the older RPMs over the newer library. That fails, and the PHP build aborts. The only options for affected users are to versionlock both packages on the old version, which skips AlmaLinux’s security update, or to stop rebuilding PHP.

    Suggested fixes
    1. Host a compat-openssl11-devel RPM matching 1.1.1k-5.el9_8.6, and keep it in step with future AlmaLinux updates.
    2. Don’t hardcode the version in the install step. If compat-openssl11 is already installed, fetch the -devel matching the installed version (rpm -q --qf '%{VERSION}-%{RELEASE}' compat-openssl11), or fail with a clear message instead of attempting a downgrade.
    3. Optionally, have centmin.sh’s update routine warn when the -devel and the library are out of step.
    4. Short-term mitigation: when Centmin Mod installs its compat-openssl11 RPMs, also lock both packages so dnf update doesn’t error out:
    Code (Text):
       dnf versionlock add compat-openssl11 compat-openssl11-devel
    


    This keeps PHP rebuilds working and stops the update error, but it holds back AlmaLinux’s compat-openssl11 security updates. It should be paired with fix 1 or 2, so the lock is lifted (or bumped) once a matching -devel RPM is available. Ideally centmin.sh would print a notice that these packages are locked and why.

    Side observation

    ldd on the built php-fpm shows libssl.so.1.1/libcrypto.so.1.1 loaded from /opt/openssl/lib, not the compat-openssl11 libraries. The system libssl.so.3/libcrypto.so.3 are loaded in the same process as well. Is that the intended linkage?
     
  2. eva2000

    eva2000 Administrator Staff Member

    60,106
    12,587
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +19,244
    Local Time:
    5:02 PM
    Nginx 1.31.x
    MariaDB 10.x/11.4+/12.3+
    Thanks for the detailed write-up and the code pointers. Your diagnosis was right, and it's now fixed in 140.00beta01 and 141.00beta01 so run cmupdate before you try again centmin.sh menu option 5

    What changed
    • Centmin Mod no longer installs compat-openssl11 or compat-openssl11-devel from its own mirror. compat-openssl11 now comes from AlmaLinux's AppStream repo, so it gets AlmaLinux's security updates.
    • No EL9 repo ships compat-openssl11-devel, and the curl build PHP 7.4/8.0 use only needs its headers. Those now come from a header tarball built from AlmaLinux's own compat-openssl11 source rpm. It's checked against a pinned sha256 and unpacked into /opt/compat-openssl11.
    • The next PHP 7.4/8.0 build removes the old compat-openssl11-devel-1.1.1k-5.el9, so dnf update can update compat-openssl11 again.
    Updating your server

    Run cmupdate, then centmin.sh menu option 5 to rebuild PHP 8.0.30. If you added versionlocks for these packages, delete them first (check with dnf versionlock list | grep compat-openssl11). Then:
    Code (Text):
    dnf update
    rpm -q compat-openssl11 compat-openssl11-devel

    It should show compat-openssl11-1.1.1k-5.el9_8.6 and that compat-openssl11-devel is not installed. Later PHP rebuilds work with the updated package, so there's no need to hold it back.
    Your side question: yes, that linkage is intended
    • PHP 7.4 and 8.0 can't build against EL9's OpenSSL 3. For those versions Centmin Mod builds its own OpenSSL 1.1.1w into /opt/openssl and links PHP's OpenSSL support against it, which is why ldd shows libssl.so.1.1 and libcrypto.so.1.1 from /opt/openssl/lib.
    • compat-openssl11 is only used to build the separate curl library PHP 7.4/8.0 use, in /opt/curl_php. Inside php-fpm that curl reuses the libssl.so.1.1 PHP already loaded, because a process only loads one copy of it.
    • libssl.so.3 and libcrypto.so.3 come from system libraries PHP links that were built against EL9's OpenSSL 3, such as OpenLDAP, IMAP, Kerberos, net-snmp and libzip. OpenSSL versions its symbols (OPENSSL_1_1_0 and OPENSSL_3.0.0), so each library calls its own copy. I checked the actual symbol bindings on a test server: curl's SSL calls go to /opt/openssl, and OpenLDAP's go to the system OpenSSL 3.
    Security fixes for /opt/openssl

    Upstream stopped releasing OpenSSL 1.1.1 fixes after 1.1.1w in September 2023. Centmin Mod's 1.1.1w builds now include the security fixes AlmaLinux backports to compat-openssl11, plus upstream's fix for CVE-2024-9143. That's Red Hat's selection of fixes, not every OpenSSL 1.1.1 CVE published since. The same menu option 5 run rebuilds /opt/openssl once with them. cat /opt/openssl/.centminmod-openssl-patches should then show status=applied.

    I tested all of this on an AlmaLinux 9 server in the same state as yours. The dnf update conflict reproduced first. After the PHP 8.0.30 rebuild, dnf update installed compat-openssl11-1.1.1k-5.el9_8.6, a second rebuild against it worked, and PHP's curl HTTPS requests ran fine.