AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 961807
Accepted
BentCoder
BentCoder
Asked: 2019-04-07 04:34:23 +0800 CST2019-04-07 04:34:23 +0800 CST 2019-04-07 04:34:23 +0800 CST

无法将 php7.3 fpm-alpine 错误日志发送到 docker 容器中的 std

  • 772

我无法让 php-fpm 错误日志出现在 docker std 中。到目前为止,我已经尝试了很多建议,但由于某种原因根本没有进展。我正在发布我的整个设置,以便有人可以帮助我正确的方向。我所看到的只是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

应用程序配置文件

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;
}

码头工人-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"

我尝试了什么

我彼此独立地尝试了这些/文件,而不是一次完成。

  • 更改/proc/self/fd/2为/dev/stdout/ /dev/stderrforerror_log和文件中的access.log属性/usr/local/etc/php-fpm.d/docker.conf。

  • 在文件底部添加了以下代码www.conf。

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
  • 还有一些,但我忘记了。
logging
  • 1 1 个回答
  • 6373 Views

1 个回答

  • Voted
  1. Best Answer
    BentCoder
    2019-05-27T01:53:24+08:002019-05-27T01:53:24+08:00

    这似乎现在起作用了。我在此示例中进行了简化,以使其易于观察。


    my_php_1    | [26-May-2019 09:40:40] NOTICE: fpm is running, pid 1
    my_php_1    | [26-May-2019 09:40:40] NOTICE: ready to handle connections
    my_php_1    | 172.22.0.3 -  26/May/2019:09:40:51 +0000 "GET /index.php" 500
    my_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" 200
    my_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" "-"
    

    docker-compose.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.8
    
    WORKDIR /app
    
    COPY php.ini /usr/local/etc/php/conf.d/php.override.ini
    COPY www.conf /usr/local/etc/php-fpm.d/www.conf
    
    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
    

    www.conf

    [global]
    daemonize=no
    
    [www]
    user=www-data
    group=www-data
    
    listen=my_nginx:9000
    
    pm=dynamic
    pm.max_children=40
    pm.start_servers=2
    pm.min_spare_servers=2
    pm.max_spare_servers=4
    pm.max_requests=500
    

    NGINX

    Dockerfile

    FROM nginx:1.15.8-alpine
    
    WORKDIR /app
    
    COPY app.conf /etc/nginx/conf.d/default.conf
    COPY nginx.conf /etc/nginx/nginx.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;
    }
    

    • 3

相关问题

  • IIS 6 - 仅记录某些目录

  • 什么是好的日志查看器,例如 apache、postfix、syslog?

  • 如何提供可搜索的 IRC 日志?

  • 避免将某些丢失的文件记录到 Apache2 错误日志中

  • Tomcat 6 HTTP 日志滚动和清除

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve