레이블이 php인 게시물을 표시합니다. 모든 게시물 표시
레이블이 php인 게시물을 표시합니다. 모든 게시물 표시

2024년 6월 14일 금요일

nginx 에서 index.php 제거 및 SERVER['PATH_INFO'] 사용

nginx 기본 설치하게 되면 SERVER['PATH_INFO'] 가 공백으로 출력된다.


location ~ ^(.+\.php)(.*)$ {
    fastcgi_split_path_info ^(.+\.php)(.*)$;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    include        fastcgi_params;
}

location / {
    try_files $uri $uri/ /index.php$request_uri;
}


nginx 공식문서

https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_split_path_info


2019년 10월 28일 월요일

[SSL 인증서 갱신] 기존 인증서가 적용되는 경우

SSL 인증서 만료일이 다가와 SSL 인증서를 갱신받아 설치 해도 예전 인증서가 노출되는 경우 확인 하는 방법


갱신된 인증서가 정상적으로 설치 되었는지 확인 하는 간단한 방법으로 테스트용 PHP파일을 생성하면 된다.

https://my.domain/test.php 으로 접근
<?php
print_r($_SERVER); 
?>
결과값 중(시작일과 만료일 확인)
[SSL_SERVER_V_START] => Oct 25 00:00:00 2019 GMT
[SSL_SERVER_V_END] => Jan 22 23:59:59 2022 GMT
브라우저에서 URL입력란의 자물쇠 모양 클릭해서 시작일과 만료일 확인.
브라우저에는 예전인증서가 확인되고, PHP로 확인한 결과 갱신한 인증서가 확인된 경우 웹방화벽이 운용중 이라면 웹방화벽에도 해당 인증서 설치를 요청하면 해결됨.

2019년 1월 18일 금요일

이클립스(PDT) php 함수 자동완성 문제

이클립스(2018-12) 업그레이드 후 PHP 자동완성이 말을 듣지 않는다. str_ 만 입력해도 No Default Proposals 만 뿜어 낸다.


3일간 구글링을 하면서 온갖 방법을 다 해보지만 먹통이다.

1. Window->Preference->PHP->Editor->Content Assist 설정변경
2. 프로젝트 디렉토리의 .bulidpath 확인
3. workspace\.metadata\.plugins\org.eclipse.dltk.core.index.sql.h2 의 파일 삭제

내 경우에는 고쳐지지 않았다.

마지막으로 프로젝트 우클릭 -> Preference -> PHP -> Validation -> PHP Version 변경하자 정상적으로 작동된다. 



https://stackoverflow.com/questions/8574962/eclipse-autocomplete-is-not-working-for-php-project

2018년 10월 14일 일요일

여러 PDF파일을 하나로 병합 및 최적화


Ghostscript가 설치 되어 있지 않은경우
#] yum install ghostscript


여러 PDF 파일 병합 및 최적화
#] gs -sDEVICE=pdfwrite -dUseCIEColor=true -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -dDetectDuplicateImages -dCompressFonts=true -r150 -sOutputFile=new_pdf.pdf old_pdf1.pdf old_pdf2.pdf old_pdf3.pdf



※ 상세옵션 : https://ghostscript.com/doc/current/Ps2pdf.htm
PDF를 JPG로 변환하기(Ghostscript, Centos)

2018년 5월 25일 금요일

XAMPP 확장자 html 파일에서 PHP를 파싱하지 않는 경우

xampp 기본설정에서 html파일에 php코딩을 할경우 소스가 바로 노출된다.



\xampp\apache\conf\extra\httpd-xampp.conf 파일에 아래 내용을 추가한다.

<FilesMatch "\.html$">
    SetHandler application/x-httpd-php
</FilesMatch>

Apache를 재시작 하면 적용된다.

2018년 1월 2일 화요일

php chm 한글 메뉴얼 다운로드

PHP.NET의 Documentation에 들어가 보면 한국어 메뉴얼이 보이지 않는다.


아마도 한국어 번역에 많은 사람들이 참여하지 않아서가 아닐까 생각든다.



웹버전 : http://docs.php.net/manual/kr/

CHM 파일 다운로드 : http://php.net/get/php_manual_kr.chm/from/a/mirror
CHM 파일(user notes 포함) : http://php.net/get/php_enhanced_kr.chm/from/a/mirror

※ CHM파일의 경우 다운받은 후 속성에서 차단해제 버튼 클릭 후 사용이 가능합니다.

2016년 7월 28일 목요일

아파치 mod_rewrite 서브도메인 자동 생성시 document_root 고정 해결

Apache mode_rewrite를 활요한 서브도메인 자동 생성시 php의 $_SERVER['DOCUMENT_ROOT']가 모두 고정되는 현상이 발생한다.

해결방법으로 httpd.conf 또는 httpd-vhosts.conf 수정하는 방법이 있다.
<Directory "/web/">
     php_admin_value auto_prepend_file /web/setdocroot.php
</Directory>


detdocroot.php
<?php
$_SERVER['DOCUMENT_ROOT'] = str_replace($_SERVER['SCRIPT_NAME'],'',$_SERVER['SCRIPT_FILENAME']);
?>


구동 방법은 간단하다. auto_prepend_file 을 사용해서 php구동 전 setdocroot.php를 include시켜 $_SERVER['DOCUMENT_ROOT'] 환경변수를 변경한다.

URL 재작성 지침서 : https://httpd.apache.org/docs/2.2/ko/misc/rewriteguide.html

2015년 12월 22일 화요일

iconv 지원 인코딩

ANSI_X3.4-1968 ANSI_X3.4-1986 ASCII CP367 IBM367 ISO-IR-6 ISO646-US ISO_646.IRV:1991 US US-ASCII CSASCII
UTF-8
ISO-10646-UCS-2 UCS-2 CSUNICODE
UCS-2BE UNICODE-1-1 UNICODEBIG CSUNICODE11
UCS-2LE UNICODELITTLE
ISO-10646-UCS-4 UCS-4 CSUCS4
UCS-4BE
UCS-4LE
UTF-16
UTF-16BE
UTF-16LE
UTF-32
UTF-32BE
UTF-32LE
UNICODE-1-1-UTF-7 UTF-7 CSUNICODE11UTF7
UCS-2-INTERNAL
UCS-2-SWAPPED
UCS-4-INTERNAL
UCS-4-SWAPPED
C99
JAVA
CP819 IBM819 ISO-8859-1 ISO-IR-100 ISO8859-1 ISO_8859-1 ISO_8859-1:1987 L1 LATIN1 CSISOLATIN1
ISO-8859-2 ISO-IR-101 ISO8859-2 ISO_8859-2 ISO_8859-2:1987 L2 LATIN2 CSISOLATIN2
ISO-8859-3 ISO-IR-109 ISO8859-3 ISO_8859-3 ISO_8859-3:1988 L3 LATIN3 CSISOLATIN3
ISO-8859-4 ISO-IR-110 ISO8859-4 ISO_8859-4 ISO_8859-4:1988 L4 LATIN4 CSISOLATIN4
CYRILLIC ISO-8859-5 ISO-IR-144 ISO8859-5 ISO_8859-5 ISO_8859-5:1988 CSISOLATINCYRILLIC
ARABIC ASMO-708 ECMA-114 ISO-8859-6 ISO-IR-127 ISO8859-6 ISO_8859-6 ISO_8859-6:1987 CSISOLATINARABIC
ECMA-118 ELOT_928 GREEK GREEK8 ISO-8859-7 ISO-IR-126 ISO8859-7 ISO_8859-7 ISO_8859-7:1987 ISO_8859-7:2003 CSISOLATINGREEK
HEBREW ISO-8859-8 ISO-IR-138 ISO8859-8 ISO_8859-8 ISO_8859-8:1988 CSISOLATINHEBREW
ISO-8859-9 ISO-IR-148 ISO8859-9 ISO_8859-9 ISO_8859-9:1989 L5 LATIN5 CSISOLATIN5
ISO-8859-10 ISO-IR-157 ISO8859-10 ISO_8859-10 ISO_8859-10:1992 L6 LATIN6 CSISOLATIN6
ISO-8859-11 ISO8859-11 ISO_8859-11
ISO-8859-13 ISO-IR-179 ISO8859-13 ISO_8859-13 L7 LATIN7
ISO-8859-14 ISO-CELTIC ISO-IR-199 ISO8859-14 ISO_8859-14 ISO_8859-14:1998 L8 LATIN8
ISO-8859-15 ISO-IR-203 ISO8859-15 ISO_8859-15 ISO_8859-15:1998 LATIN-9
ISO-8859-16 ISO-IR-226 ISO8859-16 ISO_8859-16 ISO_8859-16:2001 L10 LATIN10
KOI8-R CSKOI8R
KOI8-U
KOI8-RU
CP1250 MS-EE WINDOWS-1250
CP1251 MS-CYRL WINDOWS-1251
CP1252 MS-ANSI WINDOWS-1252
CP1253 MS-GREEK WINDOWS-1253
CP1254 MS-TURK WINDOWS-1254
CP1255 MS-HEBR WINDOWS-1255
CP1256 MS-ARAB WINDOWS-1256
CP1257 WINBALTRIM WINDOWS-1257
CP1258 WINDOWS-1258
850 CP850 IBM850 CSPC850MULTILINGUAL
862 CP862 IBM862 CSPC862LATINHEBREW
866 CP866 IBM866 CSIBM866
MAC MACINTOSH MACROMAN CSMACINTOSH
MACCENTRALEUROPE
MACICELAND
MACCROATIAN
MACROMANIA
MACCYRILLIC
MACUKRAINE
MACGREEK
MACTURKISH
MACHEBREW
MACARABIC
MACTHAI
HP-ROMAN8 R8 ROMAN8 CSHPROMAN8
NEXTSTEP
ARMSCII-8
GEORGIAN-ACADEMY
GEORGIAN-PS
KOI8-T
CP154 CYRILLIC-ASIAN PT154 PTCP154 CSPTCP154
KZ-1048 RK1048 STRK1048-2002 CSKZ1048
MULELAO-1
CP1133 IBM-CP1133
ISO-IR-166 TIS-620 TIS620 TIS620-0 TIS620.2529-1 TIS620.2533-0 TIS620.2533-1
CP874 WINDOWS-874
VISCII VISCII1.1-1 CSVISCII
TCVN TCVN-5712 TCVN5712-1 TCVN5712-1:1993
ISO-IR-14 ISO646-JP JIS_C6220-1969-RO JP CSISO14JISC6220RO
JISX0201-1976 JIS_X0201 X0201 CSHALFWIDTHKATAKANA
ISO-IR-87 JIS0208 JIS_C6226-1983 JIS_X0208 JIS_X0208-1983 JIS_X0208-1990 X0208 CSISO87JISX0208
ISO-IR-159 JIS_X0212 JIS_X0212-1990 JIS_X0212.1990-0 X0212 CSISO159JISX02121990
CN GB_1988-80 ISO-IR-57 ISO646-CN CSISO57GB1988
CHINESE GB_2312-80 ISO-IR-58 CSISO58GB231280
CN-GB-ISOIR165 ISO-IR-165
ISO-IR-149 KOREAN KSC_5601 KS_C_5601-1987 KS_C_5601-1989 CSKSC56011987
EUC-JP EUCJP EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE CSEUCPKDFMTJAPANESE
MS_KANJI SHIFT-JIS SHIFT_JIS SJIS CSSHIFTJIS
CP932
ISO-2022-JP CSISO2022JP
ISO-2022-JP-1
ISO-2022-JP-2 CSISO2022JP2
CN-GB EUC-CN EUCCN GB2312 CSGB2312
GBK
CP936 MS936 WINDOWS-936
GB18030
ISO-2022-CN CSISO2022CN
ISO-2022-CN-EXT
HZ HZ-GB-2312
EUC-TW EUCTW CSEUCTW
BIG-5 BIG-FIVE BIG5 BIGFIVE CN-BIG5 CSBIG5
CP950
BIG5-HKSCS:1999
BIG5-HKSCS:2001
BIG5-HKSCS BIG5-HKSCS:2004 BIG5HKSCS
EUC-KR EUCKR CSEUCKR
CP949 UHC
CP1361 JOHAB
ISO-2022-KR CSISO2022KR
CP856
CP922
CP943
CP1046
CP1124
CP1129
CP1161 IBM-1161 IBM1161 CSIBM1161
CP1162 IBM-1162 IBM1162 CSIBM1162
CP1163 IBM-1163 IBM1163 CSIBM1163
DEC-KANJI
DEC-HANYU
437 CP437 IBM437 CSPC8CODEPAGE437
CP737
CP775 IBM775 CSPC775BALTIC
852 CP852 IBM852 CSPCP852
CP853
855 CP855 IBM855 CSIBM855
857 CP857 IBM857 CSIBM857
CP858
860 CP860 IBM860 CSIBM860
861 CP-IS CP861 IBM861 CSIBM861
863 CP863 IBM863 CSIBM863
CP864 IBM864 CSIBM864
865 CP865 IBM865 CSIBM865
869 CP-GR CP869 IBM869 CSIBM869
CP1125
EUC-JISX0213
SHIFT_JISX0213
ISO-2022-JP-3
BIG5-2003
ISO-IR-230 TDS565
ATARI ATARIST
RISCOS-LATIN1

참고 : https://gist.github.com/hakre/4188459

2015년 8월 21일 금요일

본문에 포함된 scrtip 태그 제거하기(정규식)

본문 내용안에 포함된 자바스크립트 삭제 정규식

preg_replace("/<script(.*?)>(.*?)<\/script>/is","",$input);

입맛에 따라 style 태그 제거등으로 활용 가능

2015년 4월 6일 월요일

PHP 에서 GMT 시간 출력

웹사이트 운영 및 관리시 시간 노출부분에 GMT 시간을 요구하는 경우가 많다. GMT가 뭘까?
GMT = Greenwich Mean Time = 그리니치 평균시 = 협정 세계시 = UTC

보통 출력시 아래와 같은 포맷으로 사용 된다.
Mon, 06 Apr 2015 06:05:16 GMT


PHP코드로는 아래와 같이 사용 한다.
<?php
echo gmdate('D, d M Y H:i:s \G\M\T', time());
?>


gmdatedate의 차이점은 date의경우 php.ini 에서 설정된 타임존을 기준으로 현재 시간을 노출하고... dmdate의 경우 GMT 표준시간을 기준으로 노출한다.

2015년 2월 10일 화요일

PHP 한글 메뉴얼(chm)

오래전 php.net 공식사이트에서 사라졌던 한글 매뉴얼이 다시 서비스 되기 시작했다.
chm 파일도 동일하게 제공하고 있다.

목차 부분에서 매번 깨져서 나오던 부분도 정상적으로 나온다.


PHP매뉴얼 웹버전 : http://php.net/manual/kr/ PHP매뉴얼 chm : http://php.net/download-docs.php

※ chm 파일의 경우 다운받은 후 속성에서 차단해제 버튼 클릭 후 사용이 가능하다.
※ 구글에서 php 한글 매뉴얼 chm 로 검색시 아직도 백만년된 사이트 들이 즐비하게 나온다.

2015년 1월 6일 화요일

특정 html 태그 제거(php)

문서의 원하는 특정 HTML 태그를 제거 할때 사용되는 방법이다.

보통은 strip_tags 함수를 사용하나 전체 HTML 태그를 삭제하거나 특정 태그만 사용이 가능하게 하는 기능만 있다. strip_tags 함수로 <a>태그만 삭제하고 싶다면 두번째 인자에 다른 허용 태그를 전부 입력해야 하므로 상황에 따라 이용하기 불편하다. 물론 특정태그 삭제하는 PHP 함수는 없다.

간단하게 preg_replace 함수를 사용해서 원하는 결과를 얻을 수 있다.

$str = "<a href=''>텍스트</a>";
$str = preg_replace("/<a[^>]*>/i", '', $str);
$str = preg_replace("/<\/a>/i", '', $str);
echo $str;

자주사용하거나 여러건의 태그삭제가 필요하다면 삭제처리 할 태그명을 배열로 받아 함수로 처리하면 좋을듯..

참고 : i 는 대소문자 구별하지 않음

2014년 10월 31일 금요일

bindParam / bindValue 차이점 - (PHP PDO)

메뉴얼에도 잘 나와있지만 bindParam과 bindValue 의 차이점에 대한 좋은 예이다.

$sex = 'male';
$s = $dbh->prepare('SELECT name FROM students WHERE sex = :sex');
$s->bindParam(':sex', $sex); // use bindParam to bind the variable
$sex = 'female';
$s->execute(); // executed with WHERE sex = 'female'

$sex = 'male';
$s = $dbh->prepare('SELECT name FROM students WHERE sex = :sex');
$s->bindValue(':sex', $sex); // use bindValue to bind the variable's value
$sex = 'female';
$s->execute(); // executed with WHERE sex = 'male' 

동일한 함수이지만 변수의 평가되는 시점에 차이가 있다.
http://stackoverflow.com/questions/1179874/pdo-bindparam-versus-bindvalue

참고
mysql_connect 등의 함수는 PHP 5.5.0부터 폐기되며, 향수 제거될 예정이라고 한다.
mysql_* 등의 함수는 MySQLi 또는 PDO_MYSQL로 사용해야 한다.
http://kr1.php.net/manual/en/function.mysql-connect.php