Ist es möglich, PHP-FPM mit verschiedenen Pool-Optionen einzurichten (xdebug aktiviert / xdebug deaktiviert)?

8

Ich habe eine LEMP-Umgebung und benötige die Option, alle Entwicklungs-Subdomains vom Staging zu trennen (Entwicklung mit xdebug-Staging ohne).

  • dev.projectX.mydomain.tld
  • staging.projectX.mydomain.tld

Deshalb habe ich zwei Pools php-dev und php-stage eingerichtet, aber es scheint, dass ich Erweiterungen nur in der php.ini aktivieren kann!?

Hier ist meine pool.conf (dev)

[php-dev]
listen = 127.0.0.1:9101
listen = /var/run/php-fpm/a1-php-dev.socket
listen.backlog = -1
listen.allowed_clients = 127.0.0.1

user = nginx
group = nginx

request_slowlog_timeout = 3s
slowlog = /var/log/php-fpm/slowlog-php-dev.log

pm = dynamic
pm.max_children = 20
pm.start_servers = 10
pm.min_spare_servers = 4
pm.max_spare_servers = 16
pm.max_requests = 500
pm.status_path = /status

request_terminate_timeout = 120s
rlimit_files = 131072
rlimit_core = unlimited
catch_workers_output = yes

env[HOSTNAME] = $HOSTNAME
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

php_admin_value[zend_extension]         = "/usr/lib64/php/modules/xdebug.so"
php_admin_value[xdebug.default_enable]      = 0
php_admin_value[xdebug.remote_enable]       = 0
php_admin_value[xdebug.remote_autostart]        = 0
php_admin_value[xdebug.remote_host]         = localhost 
php_admin_value[xdebug.profiler_enable_trigger]     = 0
php_admin_value[xdebug.remote_port]         = 9001
php_admin_value[xdebug.collect_params]      = 2
php_admin_value[xdebug.collect_vars]        = 1
php_admin_value[xdebug.trace_format]        = 2

Xdebug wird leider nicht geladen.

Gibt es eine andere Option, um xdebug nur auf dev. * -Domains zu laden?

Thorsten Scheckenbach
quelle

Antworten:

6

Leider können Sie nicht für jeden FPM-Pool unterschiedliche Module oder Modulversionen laden. Bisher habe ich in ähnlichen Situationen mehrere völlig separate Instanzen von PHP-FPM erstellt.

Wiederholung
quelle
1

Ja, aber der zusätzliche Pool muss auch unter einem separaten Dienst ausgeführt werden. Dieser Dienst kann dieselben Binärdateien verwenden, benötigt jedoch eigene conf-Dateien und (einige) Verzeichnisse. Wie dies erreicht werden kann, hängt von Ihrem System und seinem Servicemanager ab. Ich habe diese Antwort als Grundlage verwendet, weil ich systemd habe.

Walf
quelle
0

Am einfachsten ist es, einen Dienst in / etc / init / php-xdebug zu erstellen

start on runlevel [2345]
stop on runlevel [016]

# you can uncomment this with recent upstart
# reload signal USR2

pre-start script
mkdir -p /run/php
chmod 0755 /run/php
chown www-data:www-data /run/php
end script

respawn
exec /usr/sbin/php-fpm7.0 --nodaemonize --fpm-config /etc/php/7.0/fpm/php-xdebug.conf
James M.
quelle