CMS/프레임워크 | Rhymix 2.1 |
---|---|
개발 언어 | PHP 7.4 |
정확하지는 않지만 비동기 작업 정상 작동 중 최근 서버에서 몇가지 작업 ( apcu 설치, root 권한 크론탭 작업, 라이믹스 업데이트 외..)의 영향때문인지 작동이 되질 않는 문제로 문의드립니다.
1. 환경 정보
rhymix_version : 2.1.25
php : 7.4.33 (64-bit)
server : nginx/1.18.0
basedir : /var/www/html/
owner : www-data (33:33)
user : www-data (33:33)
2. 현재 상태
1) 비동기 작업 사용 체크 해제 시 > 메일 테스트 > 메일 발송 내역 정상 기록 및 실제 메일 수신 됨
2) 비동기 작업 사용 체크 > 메일 테스트 > 테스트에 성공하였습니다....> 메일 발송 내역 기록이 되지 않고 메일 수신 확인이 되지 않음
3. 설정사항
1) ssh 접속 > sudo crontab -e -u www-data 아래 내용 적용 된 상태
* * * * * /usr/bin/php /var/www/html/index.php common.cron >> /var/log/nginx/queue.log 2>&1
2) * root 권한으로 작성된 크론탭에는 다른 모듈에서 실행하는 작업을 모두 삭제한 상태입니다.
4. queue.log 에는 아래와 같은 유형의 로그가 기록되어 있습니다.
PHP Exception: Error #0 "Undefined constant PDO::MYSQL_ATTR_USE_BUFFERED_QUERY" in modules/module/module.model.php on line 81 (via common/framework/DB.php on line 130)
#0 /var/www/html/common/framework/DB.php(110): Rhymix\Framework\DB->connect()
#1 /var/www/html/common/framework/DB.php(78): Rhymix\Framework\DB->__construct()
#2 /var/www/html/common/legacy.php(197): Rhymix\Framework\DB::getInstance()
#3 /var/www/html/modules/module/module.model.php(81): executeQuery()
#4 /var/www/html/modules/module/module.model.php(207): ModuleModel::getDefaultDomainInfo()
#5 /var/www/html/classes/context/Context.class.php(233): ModuleModel::getDefaultMid()
#6 /var/www/html/index.php(52): Context::init()
PHP Exception: Error #0 "Undefined constant PDO::MYSQL_ATTR_USE_BUFFERED_QUERY" in modules/module/module.model.php on line 81 (via common/framework/DB.php on line 130)
#0 /var/www/html/common/framework/DB.php(110): Rhymix\Framework\DB->connect()
#1 /var/www/html/common/framework/DB.php(78): Rhymix\Framework\DB->__construct()
#2 /var/www/html/common/legacy.php(197): Rhymix\Framework\DB::getInstance()
#3 /var/www/html/modules/module/module.model.php(81): executeQuery()
#4 /var/www/html/modules/module/module.model.php(207): ModuleModel::getDefaultDomainInfo()
#5 /var/www/html/classes/context/Context.class.php(233): ModuleModel::getDefaultMid()
#6 /var/www/html/index.php(52): Context::init()
5. sudo systemctl status cron
이외에 더 필요한 사항 있으시면 말씀 부탁드리겠습니다.
댓글 6
터미널에서 /usr/bin/php -v 해보세요. PHP 7.4.33이 맞나요?
답변감사합니다.
php 7.4.33 ( 서버환경에서도 php : 7.4.33 로 표시 )이구요 usr/bin/php -v 로 입력하면 아래와 같이 출력됩니다.
root@naseller:~# /usr/bin/php -v
PHP 8.4.8 (cli) (built: Jun 9 2025 13:49:53) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.4.8, Copyright (c) Zend Technologies
with Zend OPcache v8.4.8, Copyright (c), by Zend Technologies
혹시 apcu 설치 과정 과 연관되어 문제가 될 만한 부분이 있을까요?
sudo apt update
sudo apt install php-apcu
로 설치 후 다시 아래 명령어로 설치 했습니다.
sudo apt update
sudo apt install php7.4-apcu
# 심볼릭 링크 생성으로 활성화
sudo ln -s /etc/php/7.4/mods-available/apcu.ini /etc/php/7.4/fpm/conf.d/20-apcu.ini
sudo ln -s /etc/php/7.4/mods-available/apcu.ini /etc/php/7.4/cli/conf.d/20-apcu.ini
sudo systemctl restart php7.4-fpm
--------------------------------
혹시 아래 부분이 참고가 되실지 몰라 추가로 기재합니다.
root@naseller:~# grep -r "fastcgi_pass" /etc/nginx/
/etc/nginx/sites-available/default: fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
root@naseller:~# ps aux | grep php-fpm
root 2393706 0.0 1.4 350600 28264 ? Ss Jun29 0:03 php-fpm: master process (/etc/php/7.4/fpm/php-fpm.conf)
www-data 2393707 0.0 2.8 429652 57836 ? S Jun29 0:29 php-fpm: pool www
www-data 2393708 0.0 2.8 429852 58220 ? S Jun29 0:30 php-fpm: pool www
www-data 2402443 0.0 2.8 429640 57000 ? S 09:10 0:10 php-fpm: pool www
root 2404966 0.0 0.1 6480 2184 pts/0 S+ 12:24 0:00 grep --color=auto php-fpm
루트 권한으로 update-alternatives --config php
7.4 옆에 있는 일련번호를 입력하고 엔터 치세요.
OS에서 제공하는 기본 버전보다 오래된 버전의 PHP를 추가로 설치하여 사용하는 서버라면, 웹에서 nginx와 연동되는 PHP 버전과 터미널에서 기본 선택되는 PHP 버전이 서로 다를 수 있습니다. 현재 터미널에서는 8.4가 기본이네요. 확장모듈은 PHP 버전마다 다르게 설치되기 때문에, 잘못된 버전을 선택하면 apcu는 고사하고 기본적인 mysql 연동 기능조차 설치되어 있지 않은 빈 껍데기가 나올 수도 있습니다.
P.S. 확장모듈 설치 후 심볼릭 링크 생성하라고 알려주는 정신나간 AI는 누군가요? GPT? Gemini? ㅡ.ㅡ
감사합니다. 알려주신대로 하니 비동기작업 ( 이메일 ) 정상 작동 됩니다.
클로드 ( https://claude.ai/ ) 라는 ai인데요. 아래 내용입니다. 뭔가 다른 조치를 취해야 할지 혹시 조언 좀 받을 수 있을까요? ^^;;
APCu(APCu User Cache)는 PHP의 메모리 기반 캐시 시스템으로, Rhymix의 성능을 크게 향상시킬 수 있습니다. 현재 환경에서 APCu를 설치하고 설정하는 방법을 단계별로 안내해드리겠습니다.
1. APCu 설치
Ubuntu/Debian 환경에서 설치
sudo apt update
sudo apt install php7.4-apcu
2. PHP 설정 파일 수정
php.ini 또는 별도 설정 파일 생성
sudo nano /etc/php/7.4/mods-available/apcu.ini
APCu 설정 내용
ini; APCu 확장 활성화
extension=apcu.so
; APCu 기본 설정
apc.enabled=1
apc.shm_size=128M
apc.ttl=7200
apc.user_ttl=7200
apc.gc_ttl=3600
apc.entries_hint=4096
apc.slam_defense=1
apc.enable_cli=0
; Rhymix 최적화 설정
apc.serializer=php
apc.coredump_unmap=0
apc.preload_path=""
설정 파일 활성화 (Ubuntu/Debian)
bash# 심볼릭 링크 생성으로 활성화
sudo ln -s /etc/php/7.4/mods-available/apcu.ini /etc/php/7.4/fpm/conf.d/20-apcu.ini
sudo ln -s /etc/php/7.4/mods-available/apcu.ini /etc/php/7.4/cli/conf.d/20-apcu.ini
3. PHP-FPM 및 Nginx 재시작
sudo systemctl restart php7.4-fpm
# Nginx 재시작
sudo systemctl restart nginx
심볼릭 링크 생성과 nginx 재시작은 불필요한 과정입니다. 한다고 딱히 손해볼 것은 없지만, 이 녀석이 우분투에 PHP 확장모듈 설치하는 방법을 제대로 이해하지 못하고 있다는 뜻이죠. ㅎㅎ
매번 도움 말씀 감사합니다. :)