Dev Blog

스크립트 & 소스코드 공유

실무에서 유용하게 쓰는 스크립트와 코드 조각을 블로그 게시판으로 저장하고 공유합니다.

26건의 글

Nginx+PHP-FPM에서 .html 파일에서 PHP 코드 실행하기

Nginx 환경에서 .html·.htm 파일에서도 PHP 코드가 실행되도록 설정하는 방법이다. /www/server/nginx/conf의 enable-php-74.conf에서 location 정규식 매칭에 html·htm을 추가하고, /www/server/php/74/etc/php-fpm.conf의 security.limit_extensions에 .html·.htm 확장자를 등록한 뒤 저장하면 된다.

第一步:修改 Nginx 引用文件 (针对 7.4)​

由于你换了版本,Nginx 现在引用的应该是 enable-php-74.conf

  1. 进入目录:/www/server/nginx/conf/
  2. 找到并打开文件:enable-php-74.conf
  3. 将其内容修改为(注意第一行加入了 htmlhtm):
location ~ [^/]\.(php|php5|html|htm)(/|$)
    {
        try_files $uri =404;
        fastcgi_pass  unix:/tmp/php-cgi-74.sock;
        fastcgi_index index.php;
        include fastcgi.conf;
        include pathinfo.conf;
    }
第二步:修改 PHP-7.4 的安全后缀限制
  1. 进入宝塔面板 -> 文件。
  2. 直接进入这个路径:/www/server/php/74/etc/
  3. 找到文件:php-fpm.conf 并双击打开。
  4. 在这个文件里搜索 [www](通常就在文件开头或中部)。
  5. 在 [www] 下方添加: security.limit_extensions = .php .php3 .php4 .php5 .php7 .html .htm
  6. 保存。

그누보드 메일이 발송되지 않을 때 - SMTP 설정 방법

그누보드에서 메일이 정상적으로 발송되지 않을 때 네이버 SMTP로 보내는 설정 방법이다. /lib/mailer.lib.php에서 G5_SMTP 관련 부분을 주석 처리하고, $mail->IsSMTP(), SMTPSecure = "ssl", Host = smtp.naver.com, Port = 465, 네이버 계정의 Username과 Password를 직접 입력한다. 네이버 메일의 POP3/IMAP 설정 안내에서 값을 확인할 수 있다.

닷X 무료 호스팅과 네이버 SMTP를 기준으로 테스트한 것입니다.
우선 /lib/mailer.lib.php 파일을 여신 후에

/*
if (defined('G5_SMTP') && G5_SMTP) {
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host = G5_SMTP; // SMTP server
if(defined('G5_SMTP_PORT') && G5_SMTP_PORT)
$mail->Port = G5_SMTP_PORT;
}
*/

이렇게 된 부분이 있습니다.
주석으로 막으셔도 되고 위에 써 있는 상수(config.php)를 직접 수정하셔도 됩니다.
계정 정보를 입력해야 하고 ssl, auth 이런 것들 때문에 저는 주석으로 막고 이 파일을 그냥 수정했습니다.

아래 부분을 주석으로 막은 바로 밑에 붙여 넣으시면 됩니다.

$mail->IsSMTP();
$mail->SMTPDebug = 2;
$mail->SMTPSecure = "ssl";
$mail->SMTPAuth = true;
$mail->Host = "smtp.naver.com";
$mail->Port = 465;
$mail->Username = "naver id";
$mail->Password = "naver password";

//여기에서 수정하셔야 할 것은

$mail->Host = "smtp.naver.com";
$mail->Port = 465;
$mail->Username = "naver id";
$mail->Password = "naver password";

이 네 가집니다.

위 값은 SMTP를 제공해 주는 메일 계정에 보면 다 나옵니다.
네이버를 기준으로 하였으니 네이버 메일로 접속하신 후 좌측 하단에 보면 '외부메일 가져오기'라고 된 부분이 있습니다.
클릭하신 후에 POP3/IMAP 설정을 들어가세요.
그러면 가장 하단에 '메일 프로그램 환경 설정 안내' 부분이 있습니다.
여기에 있는 정보를 그대로 위 네 가지에 넣어 주시면 됩니다.

그리고 나서 실행해 보세요.

혹시 몰라 mailer.lib.php 파일 첨부합니다.

mailer("테스트", "보내는 사람", "받는 사람", "대출 문의", "내용입니다.");
실제로 위 함수를 실행할 때 보내는 사람 메일 주소는 smtp 계정에서 사용하는 메일 주소를 넣으셔야 합니다.
예를 들어서 나는 개인정보보호를 위한 이메일주소 노출방지 으로 해야만 발송이 된다는 겁니다.

EditPlus 찾기·바꾸기에서 정규표현식 사용하기

EditPlus의 찾기·바꾸기 기능에서 정규식을 사용해 문자열을 치환하는 방법이다. PHP 버전이 올라가며 오류를 내는 $arr[string] 구문을 $arr['string']으로 바꾸는 예제를 통해, 대괄호 안 문자열을 찾는 정규식 \[([A-Za-z][A-Za-z0-9_]*)\]과 괄호 그룹을 참조하는 \1 치환 문법을 설명한다.

에디트플러스의 찾기와 바꾸기 기능에서 정규표현식을 사용할 수 있다.

이 기능을 이용해 특정 문자열을 치환해 보고자 한다.

  1. 상황

PHP 에서 예전에는 오류를 내지 않던 구문이 php 버전이 높아지면서 오류를 내는 구문들이 있다.

ex) $arr[string]

  1. 원하는 작업

작은따옴표 붙이기

$arr[string] ==> $arr['string']

  1. EditPlus 바꾸기 기능

바꾸기 창에서 정규식 체크후에,

찾을말 : [([A-Za-z]+[A-Za-z0-9_]+)]

바꿀말 : ['\1']

  1. 문법설명

[ 로 시작해서 ] 로 끝나는 문자열을 찾는다.

숫자만으로 된것은 찾으면 안되기 때문에, [A-Za-z] 가 1개이상(+) 으로 시작해야 하고,

영문대소 숫자 언드바 로 구성된 문자열을 찾는다.

찾을말에서 괄호 () 안의 문자열이, 바꿀말에서 \1 에 들어간다.

따라서, [string] 이 ['string'] 으로 변환된다.

PHP simplexml로 XML 파일 파싱하기

PHP의 simplexml_load_file 함수로 XML 파일을 읽어 특정 노드 값을 가져오는 방법이다. 그누보드 환경에서 cd_catalog.xml 파일을 로드하고, $xml->CD[1]->TITLE처럼 객체 경로로 접근해 원하는 요소의 데이터를 출력하는 예제를 보여준다. XML 파싱 결과를 확인하는 print_r2 활용법도 포함한다.

<?
include_once('./_common.php');

$xmlfile = "./cd_catalog.xml";
$xml = simplexml_load_file($xmlfile);

$data = $xml->CD[1]->TITLE;
echo $data;
print_r2($xml);
?>

PHP 엑셀 업로드 시 날짜·시간 변환 함수

PHP에서 엑셀 파일을 업로드할 때 날짜/시간 값을 일반 날짜 형식으로 변환하는 함수 excelformatTime()을 소개한다. 값에 '-'가 포함된 문자열이면 strtotime으로 변환하고, 그렇지 않은 엑셀 시리얼 숫자면 기준값 25569에서 (값-25569)*3600*24로 환산해 Y-m-d H:i:s 형식으로 반환한다.

function excelformatTime($timevalue){

if(strpos($timevalue,"-")){
$time =  strtotime($timevalue);
}else{
$time =  intval(($timevalue- 25569) * 3600 * 24);
}
return date('Y-m-d H:i:s', $time);
}


Let's create something great together.

프로젝트 문의 및 견적 요청은 언제든 환영합니다.