docker/ddev - ioncube für php7.4?

Schumiel

Lieutenant
Registriert
Jan. 2010
Beiträge
825
Hallo,

ich möchte gern ein ioncube installieren für die PHP-Version 7.4

Folgendes füge ich in die Datei .ddev/web-build/Dockerfile hinzu.

Code:
ARG BASE_IMAGE
FROM $BASE_IMAGE

# Install the ioncube loader - set the PHP_VERSION to what you need
ENV PHP_VERSION=7.4
RUN mkdir -p /usr/local/lib && curl -sSlL  -o /tmp/ioncube.tar.gz https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz && tar -x --strip-components=1 -C /usr/local/lib -f /tmp/ioncube.tar.gz ioncube/ioncube_loader_lin_${PHP_VERSION}.so

# The ioncube_loader has to be the very first thing in the php.ini, so insert it there.
ENV PHP_INI_PATH=/etc/php/${PHP_VERSION}/fpm/php.ini
RUN (echo 'zend_extension = /usr/local/lib/ioncube_loader_lin_${PHP_VERSION}.so' && cat ${PHP_INI_PATH}) > ${PHP_INI_PATH}.new && mv ${PHP_INI_PATH}.new ${PHP_INI_PATH}

Jedoch passiert dies nicht. Nach der Überprüfung mit ddev exec php --version wird mir das nicht angezeigt.

Die Information der Startseite von ioncube verunsichert mich etwas. Heißt das, ioncube für PHP7.4 gibt es nur über die Bezahlschranke? Klappt deswegen die Installation mit ddev nicht?
 
Du lädst die Erweiterung in die FPM SAPI, prüfst aber die CLI SAPI.

Für Erweiterungen bringt PHP ein Standardverzeichnis mit, findest du über php -i unter dem Wert "extension_dir".
Dort solltest du die Erweiterung ablegen, nicht einfach "irgendwo" im Dateisystembaum.

# The ioncube_loader has to be the very first thing in the php.ini, so insert it there.

Flat out .. Schwachsinn und falsch. php -i sollte dir etwas in der Art anzeigen:
Scan this dir for additional .ini files => /etc/php/7.4/cli/conf.d

Das Verzeichnis wird je nach SAPI unterschiedlich sein.

Dort kannst du die ini für die Erweiterung ablegen. So kannst du auch einzelne Komponenten gezielt laden (oder wieder entfernen), und musst es nicht über eine monolithische Konfiguration abbilden.
 
Das möchte aber alles nicht funktionieren. Auch wenn ich es händisch konfiguriere.

Meine Schritte:

Code:
wget https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz

tar -xvzf ioncube_loaders_lin_x86-64.tar.gz

ddev ssh

sudo su

cd xxxx/ioncube

cp ioncube_loader_lin_7.4.so /usr/lib/php/20200930 (<- extension_dir)

logout

vi .ddev/php/php.ini

einfügen: zend_extension=ioncube_loader_lin_7.4.so

ddev start

Aufruf der phpinfo() -> ioncube nicht dabei

Wo ist mein Fehler?
 
Zuletzt bearbeitet:
Spät, aber anyways ..
PHP-FPM hat einen Master Prozess, der beim Start die ini und ini Verzeichnisse einliest. Du musst in diesen Fällen den Master Prozess neustarten, um die geänderte Konfiguration einzulesen.
Manche Einstellungen kannst du über eine .user.ini anpassen, Extensions gehören da aber nicht dazu.
 
Zurück
Oben