From e106d2df4e38a32815ad59b832ad52d22e96bd8d Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Mon, 27 Jul 2026 01:30:03 +0300 Subject: [PATCH] =?UTF-8?q?=D8=AA=D9=88=D8=AC=D9=8A=D9=87=20error=5Flog=20?= =?UTF-8?q?=D9=84=D9=85=D8=AE=D8=B1=D8=AC=20=D8=A7=D9=84=D8=AD=D8=A7=D9=88?= =?UTF-8?q?=D9=8A=D8=A9=20=E2=80=94=20=D9=83=D9=86=D8=A7=20=D9=86=D8=B4?= =?UTF-8?q?=D8=AE=D9=91=D8=B5=20=D8=A7=D9=84=D8=A3=D8=B9=D8=B7=D8=A7=D9=84?= =?UTF-8?q?=20=D8=B9=D9=85=D9=8A=D8=A7=D9=86=D8=A7=D9=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit www-pool.conf كان يوجّه slowlog إلى /proc/self/fd/2 لكن لا شيء لـ error_log، فكل رسائل error_log() في الباك إند تُبتلع ولا يظهر أي سطر في: docker compose logs php والباك إند مليء بها ويعتمد عليها في التشخيص: [accept_ride] و [FCM_DEBUG] (يطبع حمولة FCM ورد Google كاملاً) و 📲 [FCM_RESULT] و [SOCKET_DEBUG] و [SSRF_BLOCKED] و [SOCKET_BLOCKED]. النتيجة العملية أن سبب فشل الإشعارات كان يمكن قراءته في سطر واحد من رد Google (UNREGISTERED / INVALID_ARGUMENT / 403) بدل الاستنتاج من الكود. catch_workers_output=yes ينقل stdout/stderr للعمّال، و decorate_workers_output=no يمنع بادئات الضجيج، وphp_admin_value[error_log] يثبّت المسار على fd/2. Co-Authored-By: Claude Opus 5 --- docker/php/www-pool.conf | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docker/php/www-pool.conf b/docker/php/www-pool.conf index 493a0a6d..29265903 100644 --- a/docker/php/www-pool.conf +++ b/docker/php/www-pool.conf @@ -10,3 +10,12 @@ pm.max_requests = 1000 pm.status_path = /status slowlog = /proc/self/fd/2 request_slowlog_timeout = 3s + +; ‏توجيه error_log إلى مخرج الحاوية — بلا هذه الأسطر تُبتلع كل رسائل +; ‏error_log() في الكود ولا يظهر شيء في `docker compose logs php`، والباك إند +; ‏مليء بها: [accept_ride] و [FCM_DEBUG] و 📲 [FCM_RESULT] و [SOCKET_DEBUG]. +; ‏كنّا نشخّص أعطال الإشعارات استنتاجاً من الكود بدل قراءة سبب الرفض من Google. +catch_workers_output = yes +decorate_workers_output = no +php_admin_value[error_log] = /proc/self/fd/2 +php_admin_flag[log_errors] = on