LIVE집에서 놀고 있던 공폰에서 지금 이 사이트가 돌아가고 있어요

[워프월드 10] PHP-FPM 설치와 php.ini 위치 찾기

워프월드 10 · 서버 설치PHP를 설치하고 php-fpm 소켓과 php.ini를 맞춰요.
⏱ 예상 15분🧭 난이도 보통📍 SSH
💡 핵심 한 줄 요약

PHP를 설치한 뒤 php.ini를 직접 만들고, php-fpm이 소켓으로 대기하게 설정해요. php.ini 위치와 OPcache 설정 두 가지가 Termux의 함정이에요.

결과부터 보세요

이 글을 끝내면 php-fpm이 소켓 파일을 만들고 대기해요. nginx가 이 소켓으로 PHP 실행을 맡기게 돼요.

$ php -v
PHP 8.5.1 (cli) (NTS)

$ ls -l $PREFIX/var/run/php-fpm.sock
srw-rw---- 1 u0_a349 u0_a349 0 Oct 29 12:12 php-fpm.sock

준비물

  • SSH로 접속한 PC 터미널
  • DB가 켜져 있는 상태 (9편)

따라 하기

  1. PHP를 설치해요. php-gd는 이미지 썸네일을 만들 때 필요해요.
pkg install -y php php-fpm php-gd
  1. 필요한 확장이 있는지 확인해요. 아래 단어가 모두 나오면 돼요.
php -m | grep -iE "mysqli|curl|mbstring|xml|zip|gd"
  1. php.ini가 어디서 읽히는지 확인해요. 이게 첫 번째 함정이에요.
php --ini
Configuration File (php.ini) Path: /data/data/com.termux/files/usr/etc/php
Loaded Configuration File:         (none)

Loaded가 none이면 PHP가 설정 파일을 하나도 읽지 않고 있다는 뜻이에요. Termux는 etc 폴더 바로 아래가 아니라 etc/php 폴더 안의 php.ini를 읽어요.

  1. php.ini를 만들어요. 기본 파일이 없어서 필요한 줄만 직접 적어요.
mkdir -p $PREFIX/etc/php
cat >> $PREFIX/etc/php/php.ini <<'EOF'
upload_max_filesize=64M
post_max_size=64M
memory_limit=256M
max_execution_time=120
opcache.enable=0
EOF

마지막 opcache.enable=0이 두 번째 함정을 막아 줘요. Termux에서는 OPcache가 잠금 파일을 만들 폴더에 권한이 없어서, 켜 두면 php-fpm이 시작하자마자 죽는 경우가 있어요.

  1. 설정이 읽히는지 확인해요. 아래 두 줄이 새 값으로 나오면 성공이에요.
php --ini | grep Loaded
php -i | grep -E "^(upload_max_filesize|memory_limit)"
  1. php-fpm이 소켓으로 대기하게 설정해요. 설정 파일의 listen 값을 소켓 경로로 바꾸고 권한 줄을 추가해요.
sed -i "s|^listen = .*|listen = $PREFIX/var/run/php-fpm.sock|" $PREFIX/etc/php-fpm.d/www.conf
echo "listen.mode = 0660" >> $PREFIX/etc/php-fpm.d/www.conf
mkdir -p $PREFIX/var/run
  1. php-fpm을 켜요. user 지시문이 무시된다는 NOTICE는 정상이에요.
php-fpm
  1. 소켓 파일이 생겼는지 확인해요.
ls -l $PREFIX/var/run/php-fpm.sock

막히는 곳

공폰이

Cannot create lock – Permission denied (13)가 나오고 소켓이 안 생기면 OPcache 때문이에요. php.ini에 opcache.enable=0이 있는지 확인하세요.
  • 설정을 바꿨는데 그대로예요. php –ini의 Loaded 줄이 etc/php/php.ini를 가리키는지 확인하세요. none이면 파일 위치가 틀린 거예요.
  • php-fpm이 이미 켜져 있어요. pgrep -a php-fpm으로 확인하고, 설정을 바꾼 뒤에는 pkill -x php-fpm 후 php-fpm으로 다시 켜요.
  • NOTICE user directive is ignored가 떠요. 루트가 아닐 때 나오는 안내라서 무시해도 돼요.

받는 결과: php-fpm이 소켓으로 대기해요. 다음 글에서 nginx와 연결해 첫 PHP 페이지를 띄워요.

다음 글 · 11/21nginx 설치하고 첫 페이지 띄우기nginx 설정을 바꿔 8080 포트에서 PHP 페이지를 띄워요.

← 이전 글: MariaDB 설치하고 워드프레스용 DB 만들기

공폰이의 워프월드 전체 목차 (21편)

공유하기

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤