Press "Enter" to skip to content

[카테고리:] 리눅스

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/ 디렉토리에 저장됨.

PHP v5.6 이상에서 mcrypt_encrypt() 함수 사용 시 발생하는 에러 해결

mcrypt_encrypt(): Key of size 6 not supported by this algorithm. Only keys of sizes 16, 24 or 32 supported in test.php on line 128

암/복호화시 사용하는 mcrypt_encrypt() 함수가 PHP 5.6 이상에서 제약사항이 있습니다.
암/복호화시 사용하는 key의 길이를 16, 24, 32 에 맞게 사용해야 한다는 것입니다.
자릿수가 맞지 않으면 위와 같은 에러메시지를 출력하고 정상적으로 암/복호화 되지 않습니다.

그러면 php v5.6 미만에서 자유로운 길이로 사용하던 key 를 v5.6이상에서 어떻게 처리해야 할까?
다구나 키를 바꾸면 기존에 사용하던 암/복호화 된 문자열을 쓰기가 골치 아파집니다.
요렇게 해봅시다. 짧은 키도 그대로 사용할 수 있습니다.

// 암호화
function ase_encrypt($plainText)
{
    $key = 'mykeys';
    $key = str_pad($key, 16,chr(0));  // Key 자릿수 채우기
    $mode = MCRYPT_MODE_ECB;
    $enc = MCRYPT_RIJNDAEL_128;
    $iv = mcrypt_create_iv(mcrypt_get_iv_size($enc, $mode), MCRYPT_RAND);

    return strtoupper(bin2hex(mcrypt_encrypt($enc, $key, $plainText, $mode, $iv)));
}
// 복호화
function ase_decrypt($encText)
{
    $key = 'mykeys';
    $key = str_pad($key, 16,chr(0));  // Key 자릿수 채우기
    $mode = MCRYPT_MODE_ECB;
    $enc = MCRYPT_RIJNDAEL_128;
    $iv = mcrypt_create_iv(mcrypt_get_iv_size($enc, $mode), MCRYPT_RAND);

    $encText = mcrypt_decrypt($enc, $key, pack("H*", $encText), $mode, $iv);

    return rtrim($encText, $encText[strlen($encText)-1]);
}