Gần đây tôi đã nâng cấp một số gói PHP trên một máy chủ đám mây VPS và kể từ đó tôi nhận thấy một số lỗi trên các trang web lưu trữ. Điều đầu tiên tôi nhận thấy là một lỗi 502 Gateway timeout. Và sau khi xem xét các bản ghi tôi thấy điều này: Mã: [crit] 2963#0: *138 connect() to unix:/tmp/php5-fpm.sock failed (13: Permission denied) while connecting to upstream Điều đầu tiên tôi đã làm để những trang web chạy càng sớm càng tốt: Sửa /etc/php-fpm.d/www.conf Mã: nano -w /etc/php-fpm.d/www.conf Và thiết lập lắng dòng listen để xem xét như sau: Mã: listen = 127.0.0.1:9000 Sau đó, tôi chuyển trở lại cổng :9000 ở cấu hình PHP-FPM và chỉnh sửa ở mỗi tập tin cấu hình virtual host Nginx: Mã: fastcgi_pass unix:/tmp/php5-fpm.sock; Trở thành: Mã: fastcgi_pass 127.0.0.1:9000; Khởi động lại nginx, php-fpm và trang web đã làm việc trở lại. Nhưng tại sao socket php-fpm thất bại? Vấn đề là khá đơn giản: quyền và chủ sở hữu tập tin. Nguyên nhân của vấn đề là gì? Khi tôi cập nhật gói php*, một cái gì đó thay đổi và từ đó tập tin socket php-fpm đã được tạo ra: Mã: [root@node3.server.com:~]ls -ahl /tmp/php5-fpm.sock srw-rw---- 1 root root 0 May 6 08:08 /tmp/php5-fpm.sock Đó là lý do Nginx đã không thể kết nối với socket php-fpm. Để sửa chữa php5-fpm.sock không lỗi hãy làm theo các hướng dẫn sau: 1) Hãy chắc chắn tập các tin virtual host nginx (conf) được sử dụng fastcgi_pass unix: /tmp/php5-fpm.sock; trong cấu hình php-fpm. 2) Chỉnh sửa tập tin nginx.conf và chắc chắn phải giống như dưới đây: Mã: user nginx; 3) Sửa tập tin /etc/php-fpm.d/www.conf và thiết lập các biến này như bạn thấy dưới đây: Mã: listen = /tmp/php5-fpm.sock listen.owner = nginx listen.group = nginx 4) Reload lại nginx và php-fpm Mã: service nginx reload service php-fpm reload Tất cả điều trên được thực hiện, các trang web của bạn bây giờ không phải đối mặt với vấn đề 502 permission/owner vì các socket có cùng một nhóm: Mã: [root@node3.server.com:~]ls -ahl /tmp/php5-fpm.sock srw-rw---- 1 nginx nginx 0 May 6 08:08 /tmp/php5-fpm.sock