콘텐츠로 이동

PHP-FPM 실행 사용자/권한 점검

999-to-organize의 아래 원본을 운영 기준으로 정리한 내용임.

  • 04 - PHP - 03 - PHP-FPM 설정 확인.txt

목표는 PHP-FPM 실행 계정, php_value 경로, 파일 권한/SELinux 상태를 점검해 실행 오류를 사전에 줄이는 것임.


1. PHP-FPM 실행 사용자 확인

프로세스 확인:

ps aux | grep php-fpm

설정 파일에서 user/group 확인:

grep -E '^[[:space:]]*user|^[[:space:]]*group' /etc/php-fpm.conf /etc/php-fpm.d/*

운영 기준:

  • master: root
  • worker: nginx(또는 지정 서비스 계정)
  • Nginx 사용자와 PHP-FPM worker 사용자가 일관되어야 함

2. php_value 경로 점검

예시 설정(www.conf):

php_value[session.save_path] = /var/lib/php/session
php_value[soap.wsdl_cache_dir] = /var/lib/php/wsdlcache
php_value[opcache.file_cache] = /var/lib/php/opcache

디렉터리 권한 확인:

ls -ld /var/lib/php/session
ls -ld /var/lib/php/wsdlcache
ls -ld /var/lib/php/opcache

필요 시 소유권/권한 조정:

sudo chown -R root:nginx /var/lib/php/session
sudo chown -R root:nginx /var/lib/php/wsdlcache
sudo chown -R nginx:nginx /var/lib/php/opcache

sudo chmod -R 0775 /var/lib/php/session
sudo chmod -R 0775 /var/lib/php/wsdlcache
sudo chmod -R 0755 /var/lib/php/opcache

3. SELinux 컨텍스트 점검

권한이 맞는데도 접근 오류가 나면 SELinux를 확인함.

ls -lZ /var/lib/php/session /var/lib/php/wsdlcache /var/lib/php/opcache
sudo ausearch -m AVC -ts recent

필요 시 정책 반영(chcon 대신 영구 정책):

sudo semanage fcontext -a -t httpd_var_run_t "/var/lib/php/session(/.*)?"
sudo semanage fcontext -a -t httpd_var_run_t "/var/lib/php/wsdlcache(/.*)?"
sudo semanage fcontext -a -t httpd_var_run_t "/var/lib/php/opcache(/.*)?"
sudo restorecon -Rv /var/lib/php/session /var/lib/php/wsdlcache /var/lib/php/opcache

4. 적용 및 서비스 검증

sudo nginx -t
sudo systemctl restart php-fpm
sudo systemctl restart nginx
sudo systemctl status php-fpm
sudo systemctl status nginx

5. 원본 대비 제외/변경 사항

  • 원본 흐름의 핵심(실행 사용자, php_value 경로 권한)은 모두 반영함.
  • 추가로 SELinux 점검/영구 반영 절차를 보강함. 이유: 운영 서버에서 권한 문제의 실제 원인이 SELinux인 경우가 많기 때문.
  • setenforce 0, SELINUX=disabled, 임시 chcon 우회는 제외. 이유: 보안 정책 무력화 및 재부팅/재배포 시 재발 위험.