Wie kann ich separate Konfigurationsdateien für PHP (CLI) und PHP-Fpm unter einem Arch Linux erstellen?

10

Ist es möglich, separate php.ini-Dateien für php (cli) und php-fpm zu erstellen, wie es unter debian und ubuntu mit zwei Ordnern /etc/php/7.0/cliund möglich ist /etc/php/7.0/fpm?

Ich werde auch cool sein, wenn ich unabhängige Module mit einem conf.dVerzeichnis für jedes Subsystem laden kann .

Hat jemand eine Idee, wie ich es separat konfigurieren kann?

Ich habe auch versucht, die Struktur so zu verwenden, wie sie in Ubuntu 16.04 konfiguriert ist, ohne Erfolg.

Fiete
quelle

Antworten:

11

Ich habe ein paar Verbesserungen gefunden, um mein Problem zu lösen.

Erstens : Laden Sie eine separate php.iniDatei:

Ein Benutzer in einem Arch Linux-Forum hat dies von der man phpSeite gepostet :

FILES
   php-cli.ini    The configuration file for the CLI version of PHP.

   php.ini        The standard configuration file will only be used when php-cli.ini cannot be found.

Wenn ich eine /etc/php/php-cli.iniDatei erstelle, wird nur diese Datei geladen und nicht /etc/php/php.inimit dem phpBefehl cli. php-fpmlädt noch die /etc/php/php.ini.

Zweitens : Laden Sie verschiedene Modulkonfigurationen:

Ich habe in der PHP-Dokumentation die PHP_INI_SCAN_DIRUmgebungsvariable gefunden. Daher habe ich die /usr/lib/systemd/system/php-fpm.serviceDatei verschoben /etc/systemd/system/php-fpm.serviceund der Servicedatei die folgende Konfiguration hinzugefügt:

[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target

[Service]
Type=notify
Environment="PHP_INI_SCAN_DIR=/etc/php/fpm/conf.d" ; <-- I have added this line
PIDFile=/run/php-fpm/php-fpm.pid
ExecStart=/usr/bin/php-fpm --nodaemonize --fpm-config /etc/php/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target

Nach dem Neustart / Neuladen der Dienste lädt php-fpm nur die Dateien von /etc/php/fpm/conf.dund nicht mehr von /etc/php/conf.d. Dadurch kann ich cli und fpm separat konfigurieren.

Vielleicht ist dies nicht die beste Lösung, aber ich passe zu meinem Anwendungsfall. Wenn jeder eine bessere Lösung hat, zögern Sie nicht, Ihre Antwort zu posten!

Fiete
quelle
1
Dieser zweite Ansatz ist äußerst nützlich für das Debuggen, dh Sie erstellen Suffixkopien des Dienstes php-fpm und conf files / dirs, geben eine separate fpm-Konfiguration an, geben optional eine andere INI mit an --php-iniund laden den xdebug nur in der zweiten Bedienung. Natürlich muss der zweite Dienst auf einem anderen Port / Socket ausgeführt werden. Ich habe Environment="PHP_INI_SCAN_DIR=/etc/php-debugger.d:"in meiner Servicedatei den Doppelpunkt hinzugefügt, damit alle Standardmodule zusätzlich zu dem xdebug-Modul geladen werden, das ich in das Verzeichnis kopiert habe debugger.d.
Walf
3

Sie können dies immer für die CLI-Version tun:

php -c /path/to/your/php.ini

und belassen Sie die Standardeinstellungen bei denen, die über php-fpm serviert werden. Oder noch besser, fügen Sie dies Ihren Anmeldeskripten hinzu

# ~ / .bashrc
# Aliase und persönliche Funktionen

# PHP Quelle persönliche ini
alias php = 'php -c /path/to/your/php.ini'

# ls kolorieren
alias ls = 'ls --color'
...

Es wäre besser gewesen, wenn Sie angegeben hätten, welche Version (en) Sie verwenden

the_architecht
quelle
schöne Idee, aber nicht genau das, wonach ich suche. Vielleicht, wenn es keinen anderen Weg gibt. Vielen Dank.
Fiete
Nun, vielleicht gibt es, bitte teilen Sie uns mit, welche Version von PHP, PHP-Fpm und Ihre Grundeinstellung (verwenden Sie Nginx, Apache usw.). Wie Sie php-fpm eingerichtet haben. Vielleicht können wir von dort aus hilfreich sein
the_architecht