nginx-logo

NGINX – php.socket failed (13: Permission denied) Error

Ditulis oleh Beri komentar Lihat komentar

Beberapa waktu yang lalu saya melakukan upgrade modul PHP di VPS yang saya gunakan untuk “merumahkan” fazar.net. Upgrade dilakukan di VPS dengan OS Debian (webserver nginx) dan menggunakan apt-get upgrade. Setelah modul-modul PHP tersebut di upgrade, ternyata muncul error “502 – Gateway Timeout”, alhasil blog ini tidak dapat di akses sama sekali.

Upgrade ini nih yang bikin error! :(

Upgrade ini nih yang bikin error! :(

Setelah memeriksa lebih jauh file error log yang di generate oleh nginx, terdapat baris seperti ini :

08:59:19 [crit] 29703#0: *262 connect() to unix:/dev/shm/php.socket failed (13: Permission denied) while connecting to upstream, client: 110.139.***.***, server: www.fazar.net, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/dev/shm/php.socket:", host: "www.fazar.net

Wah, ternyata si nginx tidak dapat menghubungi PHP socket milik php5-fpm.

Setelah muter-muter di google, akhirnya saya mendapatkan petunjuk bahwa, hal yang demikian bisa terjadi karena ownership php.socket telah berubah, sehingga user atau group dari nginx (dalam hal ini www-data) tidak dapat mengaksesnya.

Untuk mengatasinya, silakan cek user/group dari nginx dengan menggunakan “ps aux | grep nginx”

# ps aux | grep nginx
root       470  0.0  0.4  29492  1212 ?        Ss   Aug20   0:00 nginx: master process /usr/sbin/nginx
www-data   473  0.1  2.4  33004  6360 ?        S    Aug20   1:21 nginx: worker process
www-data   474  0.0  0.5  29628  1460 ?        S    Aug20   0:00 nginx: cache manager process
root      7136  0.0  0.2   1776   576 pts/0    S+   10:14   0:00 grep nginx

Cek juga ownership dari php.socket nya (nama socket php dan path nya mungkin berbeda-beda, sesuai dengan setting masing-masing)

# ls -al /dev/shm/php.socket
srw-rw---- 1 root root 0 Aug 18 09:11 /dev/shm/php.socket

php.socket nya di miliki oleh root, dan kemungkinan besar ini yang mengakibatkan error 502 Gateway Timeout. Yang perlu kita lakukan adalah mengatur agar php5-fpm membuat php.socket dengan akses/ownership www-data. Silakan edit file konfigurasi php5-fpm sobat menjadi seperti ini (dalam contih kasus saya, file konfigurasi php5-fpm terdapat di /etc/php5/fpm/pool.d/www-data.conf):

[www-data]
listen = /dev/shm/php.socket
user = www-data
group = www-data
listen.owner = www-data
listen.group = www-data
listen.mode = 0660

Next, lakukan restart  php5-fpm.

/etc/init.d/php5-fpm restart

Periksa kembali ownership php.socket

# ls -al /dev/shm/php.socket
srw-rw---- 1 www-data www-data 0 Aug 18 09:18 /dev/shm/php.socket

Nah, kalo udah seperti diatas (ownership sudah fix), lakukan restart nginx agar perubahan yang dilakukan benar-benar bisa dijalankan dengan baik.

/etc/init.d/nginx restart

Voila~ akhirnya blog kecil ini bisa di akses dengan lancar jaya! :)

Semoga catatan kecil ini bisa membantu sobat yang “tersesat” ke blog ini setelah googling untuk memecahkan permasalahan yang sama.


Related Posts

Filed under

VPS

| Tags:

,

  1. Wow! You have save my one day time for this Nginx tips..
    Thanks bro !

Leave a Comment