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)

Advertisement

# 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

One response to “NGINX – php.socket failed (13: Permission denied) Error”

  1. Kimchi Moves berkata:

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

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *