Gần đây, tôi đã thử nghiệm với việc chuyển từ ghi nhật ký dựa trên tệp cục bộ trong ứng dụng PHP sang đẩy các lỗi PHP thông qua thiết bị xuất chuẩn để chúng xuất ra cùng với các nhật ký khác trong thiết lập docker. Điều này hoạt động tốt, nếu bạn đặt error_log
vị trí đến /dev/stdout
sau đó tôi thấy lỗi từ PHP thông qua nhật ký docker đuôi. Tuy nhiên, những lỗi tương tự này cũng xuất hiện trong bộ chứa nginx, như bên dưới thông qua "FastCGI được gửi trong thiết bị xuất chuẩn":
docker-compose-nginx-phpfpm-php-fpm-1 | THÔNG BÁO: Thông báo PHP: kiểm tra
docker-compose-nginx-phpfpm-php-fpm-1 | 172.18.0.3 - 18/Jan/2022:20:00:20 +0000 "GET /index.php" 200
docker-compose-nginx-phpfpm-web-1 | 18/01/2022 20:00:20 [lỗi] 32#32: *18 FastCGI được gửi trong thiết bị lỗi chuẩn: "PHP message: test" trong khi đọc tiêu đề phản hồi từ thượng nguồn, máy khách: 172.18.0.1, máy chủ: phpfpm.local, yêu cầu : "GET / HTTP/1.1", ngược dòng: "fastcgi://172.18.0.2:9000", máy chủ lưu trữ: "localhost:8080"
Cho rõ ràng:
Nhật ký vùng chứa PHP
docker-compose-nginx-phpfpm-php-fpm-1 | THÔNG BÁO: Thông báo PHP: kiểm tra
Nhật ký vùng chứa Nginx
docker-compose-nginx-phpfpm-web-1 | 18/01/2022 20:00:20 [lỗi] 32#32: *18 FastCGI được gửi trong thiết bị lỗi chuẩn: "PHP message: test" trong khi đọc tiêu đề phản hồi từ thượng nguồn, máy khách: 172.18.0.1, máy chủ: phpfpm.local, yêu cầu : "GET / HTTP/1.1", ngược dòng: "fastcgi://172.18.0.2:9000", máy chủ lưu trữ: "localhost:8080"
Những gì đang xảy ra ở đây? đây có phải là hành vi được mong đợi không?
Đây là kết quả của một thiết lập php-fpm/nginx rất cơ bản và tiêu chuẩn với docker-compose.yml như thế này:
phiên bản: "3.9"
dịch vụ:
web:
hình ảnh: nginx: mới nhất
cổng:
- "8080:80"
khối lượng:
- ./src:/var/www/html
- ./default.conf:/etc/nginx/conf.d/default.conf
liên kết:
- php-fpm
php-fpm:
hình ảnh: php:8-fpm
khối lượng:
- ./src:/var/www/html
một default.conf như:
người phục vụ {
chỉ mục index.php index.html;
server_name phpfpm.local;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
gốc/var/www/html;
vị trí ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
bao gồm fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
và một index.php như:
<?php
ini_set('lỗi hiển thị', 'tắt');
ini_set('error_log', '/dev/stdout');
error_log('kiểm tra');
tiếng vang phpinfo();