0

I cannot get the php-fpm error logs appear in docker std. So far I've tried many suggestions but for some reason no progress at all. I am posting my whole setup so that someone could kindly help me to right direction. All I see is app_php_1 | 172.21.0.7 - 06/Apr/2019:12:26:37 +0000 "GET /index.php" 500

PHP-FPM

Dockerfile

FROM php:7.2.13-fpm-alpine3.8

RUN apk update \
 && apk add --no-cache $PHPIZE_DEPS \
    bash git zip unzip

RUN docker-php-ext-install opcache
RUN docker-php-ext-enable opcache

RUN rm -rf /var/cache/apk/*

COPY php.ini /usr/local/etc/php/conf.d/php.override.ini
COPY www.conf /usr/local/etc/php-fpm.d/www.conf

WORKDIR /app

CMD ["php-fpm", "--nodaemonize"]

php.ini

[php]
date.timezone=UTC
log_errors=On
error_reporting=E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors=Off
max_execution_time=60
memory_limit=256M

[opcache]
opcache.enable_cli=1
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
realpath_cache_size=4096K
realpath_cache_ttl=600

www.conf

[global]
daemonize=no

[www]
user=www-data
group=www-data

listen=app_nginx:9000

pm=dynamic
pm.max_children=30
pm.start_servers=2
pm.min_spare_servers=2
pm.max_requests=1000

NGINX

Dockerfile

FROM nginx:1.15.8-alpine

RUN apk add --no-cache bash

RUN rm -rf /var/cache/apk/*

COPY app.conf /etc/nginx/conf.d/default.conf
COPY nginx.conf /etc/nginx/nginx.conf
COPY app_ssl.crt /etc/ssl/certs/app_ssl.crt
COPY app_ssl.key /etc/ssl/private/app_ssl.key

app.conf

server {
    listen 80;

    server_name localhost;

    root /app/public;

    listen 443 default_server ssl;
    ssl_certificate /etc/ssl/certs/app_ssl.crt;
    ssl_certificate_key /etc/ssl/private/app_ssl.key;

    location / {
        try_files $uri /index.php$is_args$args;
    }

    location ~ ^/index\.php(/|$) {
        fastcgi_pass app_php:9000;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        fastcgi_hide_header X-Powered-By;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        internal;
    }

    location ~ \.php$ {
        return 404;
    }
}

nginx.conf

user nginx;

worker_processes 2;

error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

events {
    worker_connections 1024;

    use epoll;
}

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    log_format json_combined escape=json
      '{'
        '"time_local":"$time_local",'
        '"remote_addr":"$remote_addr",'
        '"remote_user":"$remote_user",'
        '"request":"$request",'
        '"status": "$status",'
        '"body_bytes_sent":"$body_bytes_sent",'
        '"request_time":"$request_time",'
        '"http_referrer":"$http_referer",'
        '"http_user_agent":"$http_user_agent"'
      '}';

    access_log /var/log/nginx/access.log json_combined;

    fastcgi_buffers 8 16k;
    fastcgi_buffer_size 32k;
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;

    keepalive_timeout 65;

    server_tokens off;

    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection '1; mode=block';
    add_header X-Frame-Options DENY;
    add_header Strict-Transport-Security 'max-age=31536000; includeSubdomains; preload';
    add_header 'Referrer-Policy' 'no-referrer-when-downgrade';

    types_hash_max_size 2048;

    gzip on;

    include /etc/nginx/conf.d/*.conf;
}

docker-compose.yml

version: "3"

services:
  app_php:
    build:
      context: "./php"
    volumes:
      - "../..:/app:consistent"
  app_nginx:
    build:
      context: "./nginx"
    ports:
      - "5080:80"
      - "5443:443"
    volumes:
      - "../..:/app:consistent"
    depends_on:
      - "aapp_php"

WHAT I TRIED

I tried these independently from each other/file, not all in one go.

  • Changed /proc/self/fd/2 to /dev/stdout//dev/stderr for error_log and access.log properties in /usr/local/etc/php-fpm.d/docker.conf file.

  • Added code below at the bottom of www.conf file.

catch_workers_output = yes
php_flag[display_errors] = off
php_admin_flag[log_errors] = on
php_admin_value[error_log] = /var/log/php-fpm-error.log
php_admin_value[error_log] = /dev/stdout
php_admin_value[error_log] = /dev/stderr
  • Some more but I lost track of it.
  • Hi Bent, any luck with this issue? I'm having a similar issue so I can't debug where is the application crashed – trinvh 1 hour ago
  • I postponed for a while so I'll go back to it one day. – BentCoder 1 hour ago

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.