पीएचपी 7.3 एफपीएम भेजने में असमर्थ-डॉकर कंटेनरों के भीतर एसटीडी को अल्पाइन त्रुटि लॉग

मुझे डॉकर एसटीडी में पीएचपी-एफपीएम त्रुटि लॉग दिखाई नहीं दे सकते । अब तक मैंने कई सुझावों की कोशिश की है लेकिन किसी कारण से कोई प्रगति नहीं हुई है । मैं अपना पूरा सेटअप पोस्ट कर रहा हूं ताकि कोई मुझे सही दिशा में मदद कर सके । सब मैं देख रहा हूँ 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.8RUN apk update \ && apk add --no-cache $PHPIZE_DEPS \    bash git zip unzipRUN docker-php-ext-install opcacheRUN docker-php-ext-enable opcacheRUN rm -rf /var/cache/apk/*COPY php.ini /usr/local/etc/php/conf.d/php.override.iniCOPY www.conf /usr/local/etc/php-fpm.d/www.confWORKDIR /appCMD ["php-fpm", "--nodaemonize"]

php.ini

[php]date.timezone=UTClog_errors=Onerror_reporting=E_ALL & ~E_DEPRECATED & ~E_STRICTdisplay_errors=Offmax_execution_time=60memory_limit=256M[opcache]opcache.enable_cli=1opcache.memory_consumption=256opcache.max_accelerated_files=20000realpath_cache_size=4096Krealpath_cache_ttl=600

www.conf

[global]daemonize=no[www]user=www-datagroup=www-datalisten=app_nginx:9000pm=dynamicpm.max_children=30pm.start_servers=2pm.min_spare_servers=2pm.max_requests=1000

NGINX

Dockerfile

FROM nginx:1.15.8-alpineRUN apk add --no-cache bashRUN rm -rf /var/cache/apk/*COPY app.conf /etc/nginx/conf.d/default.confCOPY nginx.conf /etc/nginx/nginx.confCOPY app_ssl.crt /etc/ssl/certs/app_ssl.crtCOPY app_ssl.key /etc/ssl/private/app_ssl.key

ऐप।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;}

डॉकर-लिखें।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"

मैंने क्या कोशिश की

मैंने इन्हें एक दूसरे/फ़ाइल से स्वतंत्र रूप से आज़माया, सभी एक बार में नहीं ।

  • बदला हुआ /proc/self/fd/2 को /dev/stdout//dev/stderr के लिए error_log और access.log में गुण /usr/local/etc/php-fpm.d/docker.conf फ़ाइल।

  • के तल पर नीचे जोड़ा गया कोड www.conf फ़ाइल।

catch_workers_output = yesphp_flag[display_errors] = offphp_admin_flag[log_errors] = onphp_admin_value[error_log] = /var/log/php-fpm-error.logphp_admin_value[error_log] = /dev/stdoutphp_admin_value[error_log] = /dev/stderr
  • कुछ और लेकिन मैंने इसका ट्रैक खो दिया ।

यह अब काम करने लगता है । मैंने इस उदाहरण में इसे आंखों पर आसान रखने के लिए सरल बनाया ।


my_php_1    | [26-May-2019 09:40:40] NOTICE: fpm is running, pid 1my_php_1    | [26-May-2019 09:40:40] NOTICE: ready to handle connectionsmy_php_1    | 172.22.0.3 -  26/May/2019:09:40:51 +0000 "GET /index.php" 500my_nginx_1  | 172.22.0.1 - - [26/May/2019:09:40:51 +0000] "GET / HTTP/1.1" 500 5 "-" "curl/7.38.0" "-"my_nginx_1  | 2019/05/26 09:40:51 [error] 8#8: *1 FastCGI sent in stderr: "PHP message: PHP Parse error:  syntax error, unexpected end of file, expecting ',' or ';' in /app/index.php on line 4" while reading response header from upstream, client: 172.22.0.1, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://172.22.0.2:9000", host: "0.0.0.0:1080"my_php_1    | [26-May-2019 09:40:51] WARNING: [pool www] child 8 said into stderr: "NOTICE: PHP message: PHP Parse error:  syntax error, unexpected end of file, expecting ',' or ';' in /app/index.php on line 4"my_php_1    | 172.22.0.3 -  26/May/2019:09:42:49 +0000 "GET /index.php" 200my_nginx_1  | 172.22.0.1 - - [26/May/2019:09:42:49 +0000] "GET / HTTP/1.1" 200 12 "-" "curl/7.38.0" "-"my_nginx_1  | 172.22.0.1 - - [26/May/2019:09:42:56 +0000] "GET /no.php HTTP/1.1" 404 153 "-" "curl/7.38.0" "-"

डॉकर-लिखें।yaml

version: "3.4"services:  my_php:    build:      context: "./php"    volumes:      - "..:/app"  my_nginx:    build:      context: "./nginx"    ports:      - "1080:80"    volumes:      - "..:/app"    depends_on:      - "my_php"

PHP

Dockerfile

FROM php:7.2.13-fpm-alpine3.8WORKDIR /appCOPY php.ini /usr/local/etc/php/conf.d/php.override.iniCOPY www.conf /usr/local/etc/php-fpm.d/www.confCMD ["php-fpm", "--nodaemonize"]

php.ini

[PHP]date.timezone=UTClog_errors=Onerror_reporting=E_ALL & ~E_DEPRECATED & ~E_STRICTdisplay_errors=Offmax_execution_time=60memory_limit=256M

www.conf

[global]daemonize=no[www]user=www-datagroup=www-datalisten=my_nginx:9000pm=dynamicpm.max_children=40pm.start_servers=2pm.min_spare_servers=2pm.max_spare_servers=4pm.max_requests=500

NGINX

Dockerfile

FROM nginx:1.15.8-alpineWORKDIR /appCOPY app.conf /etc/nginx/conf.d/default.confCOPY nginx.conf /etc/nginx/nginx.conf

ऐप।conf

server {    listen 80 default_server;    server_name localhost;    root /app;    index index.php;    location ~ \.php$ {        try_files $uri =404;        fastcgi_pass my_php:9000;        fastcgi_split_path_info ^(.+\.php)(/.+)$;        fastcgi_index index.php;        include fastcgi_params;        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;        fastcgi_param PATH_INFO $fastcgi_path_info;    }}

nginx.conf

user nginx;worker_processes 1;error_log /var/log/nginx/error.log warn;pid /var/run/nginx.pid;events {    worker_connections 1024;}http {    include /etc/nginx/mime.types;    default_type application/octet-stream;    log_format main '$remote_addr - $remote_user [$time_local] "$request" '                    '$status $body_bytes_sent "$http_referer" '                    '"$http_user_agent" "$http_x_forwarded_for"';    access_log /var/log/nginx/access.log main;    sendfile on;    keepalive_timeout 65;    include /etc/nginx/conf.d/*.conf;}

मैंने स्वयं इसका उत्तर दिया लेकिन फिर भी आपके पूर्ण समाधान के लिए अपवोट किया :+1

हाय तुला, इस मुद्दे के साथ किसी भी भाग्य? मुझे एक समान समस्या हो रही है इसलिए मैं डिबग नहीं कर सकता कि एप्लिकेशन कहां क्रैश हुआ है

मैंने थोड़ी देर के लिए स्थगित कर दिया इसलिए मैं एक दिन वापस जाऊंगा ।

कृपया नीचे दिए गए उत्तर की जाँच करें ।