Press "Enter" to skip to content

[카테고리:] 컴퓨터

리눅스 텍스트파일 한글깨짐 고쳐보기

오래된 프로그램 소스나 텍스트 파일에서 한글깨진 파일이 있을 경우가 있다.

일단 예전 파일이 요즘쓰는 utf-8로 변환되어 있지 않아서 나타나는 현상이 대부분이다.

현재 리눅스 시스템이 어떤 인코딩 타입을 사용하고 있는지 알아보자

# locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

UTF-8을 사용하고 있군요.

다음. 한글이 깨지는 파일의 인코딩 형태를 파악해 보자.

# file -bi test.txt
text/plain; charset=utf-8

이 파일은 텍스트 파일인데 utf-8로 저장되어 있다는 소리다. 리눅스 시스템도 UTF8이니깐 이 파일은 잘 보일거다.

리눅스 시스템이 UTF-8인데 파일은 euc-kr 이라면 깨져 보일 것이다.

리눅스 시스템이 EUC-KR인데 파일이 UTF-8이라면 역시 깨져 보일 것이다.

파일 인코딩을 euc-kr 에서 utf-8로 변환하여 저장하는 방법

# iconv -c -f euc-kr -t utf-8 org.txt > new_utf8.txt

[PHP] mysql update 된 row 수 체크하기

<?php
$mysql = new mysqli("localhost","username","password","use_db");

if($mysql->connect_errno)
{
  echo "MySQL 접속 실패 : ".$mysql->connect_error;
  exit();
}

// 업데이트 처리
$mysql->query("UPDATE usertable SET name = 'myName' where id = 100");
echo "적용된 row 수: ".$mysql->affected_rows;

$mysqli->close();
?>

SELECT 일때도 동일하게 사용할 수 있습니다.

다만, query() 의 리턴 변수에서 체크하는 것이 아니라 mysqli 인스턴스로 체크합니다.

php 프로그램에서 콘솔로 출력되는 데이터를 파일로 기록하기

php 프로그램을 하면 echo, print, print_r 등 콘솔로 출력을 하는 경우가 많다.

배치로 돌릴 경우에는 날라가 버리는데 cron등에 아래와 같이 등록하면 로그로 남길 수가 있다.

그것도 날짜별로.

주의할점은 실행할 스크립트가 있는 디렉토리 아래에 txt라는 서브디렉토리가 있어야 한다.

cd /script/directory
# 오늘날짜
today=$(date "+%Y%m%d")
# 로그파일명 저장. 상대경로로 했는데... 안되면 절대경로로 바꿔주세요
logfile=./txt/${today}gen.log
# 스크립트 실행
sudo sh -c "php my_script.php" >> ${logfile}
# 날짜 로그파일 넣는 다른 방법
sudo php script_name.php >> ./txt/$(date +\%Y\%m\%d)_log.txt &

Ubuntu 20.04.3 LTS에서 Apache2 웹서버 설치

쉘에서 다음 명령어를 순서대로 실행하세요.

/var/www/html$ sudo apt update

/var/www/html$ sudo apt install apache2

방화벽 설정, 접속이 안될 경우 반드시 설정해야 함.
/var/www/html$ sudo ufw allow 'Apache Full'
Rule added
Rule added (v6)

/var/www/html$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
1194/tcp                   ALLOW       Anywhere
OpenSSH                    ALLOW       Anywhere
Apache Full                ALLOW       Anywhere
1194/tcp (v6)              ALLOW       Anywhere (v6)
OpenSSH (v6)               ALLOW       Anywhere (v6)
Apache Full (v6)           ALLOW       Anywhere (v6)
  • 환경설정 디렉토리 : /etc/apache2
  • 환경설정 예제파일 : /etc/apache2/apache2.conf입니다.
  • 포트 설정 : /etc/apache2/ports.conf
  • Apache Virtual Hosts 설정 : /etc/apache2/sites-available
    이 파일은 /etc/apache2/sites-enabled 디렉토리에 링크되어 있어야 함
  • 가상 호스트를 활성화 설정 : site-available
    site-enabled 디렉토리로 a2ensite 명령을 사용하여 symlink를 생성해야 함.
    비활성화하려면 a2dissite 명령 사용 함.
  • 도메인 이름이 mydomain.com인 경우 가상 호스트 구성 파일의 이름은 /etc/sshb2/vmx-available/mydomain.com.conf 으로 설정함.
  • Apache 모듈 로드 설정 : /etc/apache2/mods-available/
    mods-available 디렉토리의 구성은 a2enconf 명령을 사용하여 /etc/apache2/mods-enable/ 디렉토리에 대한 symlink를 생성해야 함.
    비활성화 하려면 a2disconf 명령 사용 함.
  • 글로벌 설정파일 : /etc/apache2/conf-available/ 디렉토리에 저장됨.
    conf-available 디렉토리의 파일은 a2enconf 명령을 사용하여 /etc/apache2/conf-enabled/에 대한 symlink를 생성해야 함.
    비활성화 하려면 a2disconf 명령 사용 함.
  • 로그 파일(ex:access.log 및 error.log) : /var/log/apache/ 디렉토리에 저장됨.