2018년 3월 4일 일요일

[PHP예제] 013 변수와 문자열을 출력하고 싶을 때

문자열을 홑따옴표(')나 쌍따옴표(")로 둘러싸고, 변수는 '$변수명'과 같이 달러기호($)를 붙인다. 출력에는 echo문을 사용한다.

013.php

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>변수와 문자열의 출력</title>
</head>
<body>
    <div>
<?
$name = 'PHP 프로그래밍';
$Name = 'CodeIgniter 철저입문';

echo '서적명: ' . $name . '<br>';
echo "서적명: {$Name}\n<br>";
echo '서적명: {$Name}\n<br>';

$format = '서적명: %s, %s<br>';
echo sprintf($format, $name, $Name);
?>
    </div>
</body>
</html>

위와 같이 파일을 작성하고 실행한 결과는 다음과 같다.




[PHP예제] 012 실제 환경에서 오류 출력의 설정 방법은

php.ini 또는 .user.ini로 설정하기

  • php.ini의 오류 표시 설정하기
    • error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
    • display_errors = Off
    • display_startup_errors = Off
    • log_errors = On
    • error_log = 로그 파일명

.htaccess로 설정하기

경우에 따라 .htaccess로 설정을 변경할 수 없는 경우도 있음
    • php_value error_reporting 22527
    • php_flag display_errors off
    • php_flag display_startup_errors off
    • php_flag log_errors on
    • php_value error_log /home/user/log/php.log
.htaccess에서는 error_reporting의 설정에 숫자로 지정한다.
미리 정의된 상수는 get_defined_constants() 함수에서 확인 가능


ini_set() 함수에서 설정하기

PHP 스크립트의 맨 앞에 설정할 수 있지만, 코드가 실행되기 전에 발생하는 오류가 화면에 표시될 수 있다.
    • ini_set('error_reporting', E_ALL & ~E_DEPRECATED & ~E_STRICT);
    • ini_set('display_errors', 'Off');
    • ini_set('log_errors', 'On');
    • ini_set('error_log', '/home/username/log/php.log');

[PHP예제] 005 PHP 매뉴얼을 사용하고 싶을 때

온라인 매뉴얼


http://php.net/manual/

http://php.net/phpinfo


chm판 매뉴얼


http://www.php.net/download-docs.php

[PHP예제] 004 한국어 관련 설정을 하고 싶을 때

한국어 관련 설정을 하고 싶은 경우에는 mbstring에 관련된 사항을 설정해야 한다. 기본적으로 UTF-8 로 통일해서 인코딩 하는 것을 추천한다.

설정 항목 설명
default_charset HTTP 헤더로 출력하는 기본 문자 인코딩
mbstring.language 사용하는 언어
mbstring.internal_encoding mbstring 함수의 기본 문자 인코딩(내부 문자 인코딩)
mbstring.http_input HTTP 입력 문자 인코딩
mbstring.http_output HTTP 출력 문자 인코딩
mbstring.detect_order 문자 인코딩의 자동 검출의 우선순위
mbstring.subsitute_character 변환할 수 없는 문자를 대체하는 문자
mbstring.encoding_translation HTTP 입력 문자 인코딩의 자동변환 활성화 또는 비활성화



  • EUC-KR 환경의 경우
    • default_charset = EUC-KR
    • mbstring.language = Korean
    • mbstring.internal_encoding = EUC-KR
    • mbstring.http_input = pass
    • mbstring.http_output = pass
    • mbstring.encoding_translation = Off
** mbstring.language는 반드시 mbstring.internal_encoding의 앞에 설정해야 함

  • ISO-2022-KR 환경의 경우
    • output_handler = mb_output_handler
    • mbstring.language = Korean
    • mbstring.internal_encoding = UTF-8
    • mbstring.http_input = ISO-2022-KR
    • mbstring.http_output = ISO-2022-KR
    • mbstring.encoding_translation = On
  • mbstring.encoding_translation을 On으로 설정하고 입력할 때는 입력 문자 인코딩을 mbstring.http_input으로 지정한 ISO-2022-KR에서 내부 문자 인코딩의 UTF-8로 변환한다.

** mbstring이란?
mbstring은 한국어 등의 멀티바이트 문자열을 처리하는 함수(멀티바이트 문자열 함수)를 제공하는 PHP의 확장 모듈이다. 이것은 한국어를 처리할 때 꼭 필요한 것으로, 우리나라에 있는 대부분의 렌탈 공유 서버에서는 기본적으로 지원된다.
멀티바이트 문자열 함수는 'mb_'로 이름이 시작된다. 대부분의 멀티바이트 문자열 함수는 올바른 내부 문자 인코딩을 지정하지 않으면 정상적으로 작동하지 않는다. 따라서 반드시 mbstring.internal_encoding에 올바르게 문자 인코딩을 지정해야 한다.


[PHP예제] 003 문자 인코딩을 통일하고 싶을 때

문자 인코딩은 'UTF-8'에서 통일하는 것을 추천한다. 메일 전송이나 핸드폰 사이트 등과 같이 UTF-8로 통일할 수 없는 부분만 문자 인코딩으로 자동 변환하거나 PHP 스크립트에서 mb_convert_encoding() 함수를 이용해 문자 인코딩으로 변환할 수 있다.

UTF-8로 PHP 문자 인코딩 설정하기

php.ini에서 다음 표와 같이 설정한다.
이 때 반드시 mbsring.language는 mbstring.internal_encoding의 앞에 설정해야 함.

설정 내용 설명
default_charset = UTF-8 HTTP 헤더로 출력하는 기본 문자 인코딩을 UTF-8로 설정
mbstring.language = Korean 사용하는 언어를 한국어로 설정
mbstring.internal_encoding = UTF-8 mbstring 함수의 기본 문자 인코딩을 UTF-8로 설정함
mbstring.http_input = pass HTTP 입력 문자 인코딩을 pass(지정 없음)로 설정
mbstring.http_output = pass HTTP 출력 문자 인코딩을 pass(변환 없음)로 설정
mbstring.encoding_transiation = Off HTTP 입력 문자 인코딩의 자동 변환을 Off로 설정

php.ini가 아니라 .htaccess에 의한 디렉터리 단위로 설정할 수 있다. 이렇게 설정한 값은 phpinfo() 함수에서 확인한다.


  • 지역(local) 설정하기
    • mbstring의 설정과는 별도로 PHP에는 지역에 의존하는 함수가 있어서 UNIX계 OS에서는 UTF-8로 설정한다.
  • mbstring에서 사용하는 문자 인코딩명
    • mbstring에서 지원하는 인코딩명의 목록은 mb_list_encodings() 함수에서 알아볼 수 있
    • var_dump(mb_list_encodings());




[PHP예제] 002 php.ini란?

php.ini는 PHP의 설정 파일로, 이것을 변경하면 서버의 모든 PHP 스크립트에 설정 내용이 반영된다. 현재 사용되는 php.ini 파일의 위치는 Loaded Configuration File (PHP 5.2.2 이전에는 Configuration File (php.ini) Path) 에서 알 수 있다.



php.ini 에서는 다음과 같이 설정하는데, 세미콜론(;)으로 시작되는 행은 처리 제외 행이다.


  • 설정 항목명 = 값

설정 항목의 목록은 PHP 메뉴얼을 참조
http://php.net/ini.list

예를 들어 사용할 수 있는 최대 메모리를 32MB로 설정할 경우에는 다음과 같이 지정한다.

memory_limit = 32M

[PHP예제] 001 서버의 PHP 정보를 알고 싶을 때

서버의 PHP가 어떻게 설정되었는지, 또 어떤 확장 모듈이 유효한 것인지 등을 확인할 때는 phpinfo() 함수를 사용하면 편리하다.

1
2
<?
phpinfo();


  • php 종료 태그
    • 위의 예제 코드에는 종료 태그 '?>'가 없는데, PHP 파일이 종료 태그 '?>'로 끝나는 경우에는 종료 태그를 생략할 수 있다.
  • PHP의 설정을 보는 방법
    • 설정값에는 'Local Value'와 'Master Value'의 두 개의 값이 표시되는데, 실제로 유효한 Local Value의 값을 확인하면 된다.
    • 대부분의 설정 항목은 ini_set() 함수에 의해 PHP 스크립트에서 동적으로 변경할 수 있다.
    • 특정 행의 실제 설정값을 정확하게 알고 싶으면 원하는 장소에서 ini_get() 함수를 호출하는 설정값을 확인해야 한다.