FastCGI không muốn ghi nhật ký lỗi PHP đúng cách. Vâng, đó không phải là hoàn toàn đúng sự thật: nó ghi lại các lỗi tốt, với một chút không quan trọng; nó sẽ không ghi lại bất cứ điều gì khác, chẳng hạn như cảnh báo.Nginx + FastCGI + PHP (php-fpm) không ghi nhật ký lỗi bị lỗi/cảnh báo
Lỗi nhật ký FastCGI -> khinx khét tiếng không phải là một vấn đề, nhất thiết. Lỗi và cảnh báo từ php-fpm đi thẳng đến Nginx - nhưng chỉ khi chúng không bị bắt. Tức là, nếu set_error_handler
chặn thành công lỗi, không có mục nhập nhật ký nào được thêm vào. Điều này có nghĩa là tôi có thể thấy lỗi phân tích cú pháp, nhưng đó là về nó.
php-fpm không tự ghi nhật ký lỗi PHP (tách biệt với nginx) mà không có chút hack. tập tin cấu hình ví dụ php-fpm bao gồm hai dòng sau theo mặc định:
php_admin_value[error_log] = /mnt/log/php-fpm/default.log
php_admin_flag[log_errors] = on
tôi đã thay đổi con đường error_log, rõ ràng. Tôi phải thêm dòng sau đây để làm cho nó thực sự đăng nhập bất cứ điều gì:
php_admin_value[error_reporting] = E_ALL & ~E_DEPRECATED & ~E_STRICT
Version lưu ý: phần E_STRICT là không cần thiết, như tôi đang sử dụng PHP 5.3.27, nhưng tôi có kế hoạch nâng cấp lên 5.4 tại một số điểm. Với dòng này, nó ghi lại các lỗi - và chỉ các lỗi - đến /mnt/log/php-fpm/default.log
. Bây giờ, điều này đặt error_reporting
cho cùng một giá trị mà tôi đã đặt trong php.ini, do đó, một cái gì đó rõ ràng là sai ở đây. Ngoài ra, nó không ghi lại các lỗi bị bắt: hành vi này giống với hành vi của nhật ký nginx. Tôi đã thử sử dụng giá trị số (22527) thay vào đó, nhưng vẫn không có may mắn.
Tôi không quan tâm đến tệp nhật ký nào kết thúc (nginx so với php-fpm), nhưng tôi cần gặp lỗi để ghi lại ở đâu đó. Tôi có thể nghỉ mát để tiêm lỗi của riêng tôi và xử lý ngoại lệ, nhưng đó là một chút hackish, vì vậy tôi muốn tránh điều đó.
Tôi điên trong nhớ lại rằng Apache không có vấn đề này? – Zenexer