PHP ist eine serverseitige Skriptsprache, die für Webentwicklungen entwickelt wurde, die aber auch als allgemeine Programmiersprache verwendet werden kann. PHP kann zu reinem HTML hinzugefügt werden oder es kann mit einer Vielzahl von Template-Engines und Web-Frameworks verwendet werden. PHP-Code wird normalerweise von einem Interpreter verarbeitet, der entweder als natives Modul auf dem Webserver oder als Common Gateway Interface (CGI) implementiert ist.
Beide Installationsarten sehen gleich aus, aber der Unterschied liegt in der Lokalisierung der ini-Dateien. Der Standardpfad zu ini-Dateien für ein lokales PHP ist /usr/local/etc/php. Die Docker-Installation verwendet den gleichen Pfad, aber man findet hier zwei Dateien - php.ini-development und php.ini-production sowie einen Ordner namens conf.d. Wenn Sie phpinfo() in beiden Systemen hinzufügen, können Sie folgendes sehen:
Und das ist das Problem. Leider sucht PHP nach der standardmäßigen php.ini-Datei im Standardpfad. Dateien mit dem Namen ini-development oder ini-production werden nicht akzeptiert. Andere ini-Dateien können von einem anderen Ort geladen werden: /usr/lokal/etc/php/conf.d.
1/ Wenn man Dateien mit Standardwerten hochladen möchte, kann eine der Dateien in /usr/local/etc/php/ umbenannt werden. In Dockerfile wie folgt:
{% c-block language="markdown" %}
FROM PHP:apache
WORKDIR /var/www/html
COPY . . #copy your awesome app to workdir
RUN mv /usr/local/etc/php/php.ini-development /usr/local/etc/php/php.ini
{% c-block-end %}
2) Wenn man eine Datei mit Standardwerten und einige mit benutzerdefinierten Werten hochladen möchte, kann man den Befehl Echo nach dem Umbenennen der Dateien wie in Lösung Nr. 1 wie folgt verwenden:
{% c-block language="markdown" %}
FROM PHP:apache
WORKDIR /var/www/html
COPY . . #copy your awesome app to workdir
RUN mv /usr/local/etc/php/php.ini-development /usr/local/etc/php/php.ini \
&& echo “my_values” > /usr/local/etc/php/conf.d/my_php_ini.ini
{% c-block-end %}
3) Um nur Dateien mit benutzerdefinierten Werten zu verwenden, können wir Echo- oder Multiple-Echo-Befehle verwenden oder wir können unsere eigene ini-Datei im Repo verwenden und in den richtigen Pfad kopieren bzw. wenn wir die GitLab Pipeline verwenden, können wir die Echo-Umgebung (GitLab ENV) für einige ini-Dateien im Pfad /usr/local/etc/php/conf.d/ verwenden
{% c-block language="markdown" %}
FROM PHP:apache
WORKDIR /var/www/html
COPY . . #copy your awesome app to workdir
COPY “path_to_your_ini_file(s)” /usrlocal/etc/php/conf.d
{% c-block-end %}
oder:
{% c-block language="markdown" %}
RUN echo “my_values” > /usr/local/etc/php/conf.d/my_php_ini.ini (creating file)
RUN echo “my_other_values” >> /usr/local/etc/php/conf.d/my_php_ini.ini (add_lastline_into_file)
{% c-block-end %}
Bis bald bei der nächsten Folge unserer DevOps-Serie.