PHP 튜토리얼
PHP 시작하기
수색…
비고
PHP (PHP : Hypertext Preprocessor의 재귀 약자)는 널리 사용되는 오픈 소스 프로그래밍 언어입니다. 특히 웹 개발에 적합합니다. PHP의 독특한 점은 초보자와 숙련 된 개발자 모두에게 도움이된다는 것입니다. 그것은 진입 장벽이 낮기 때문에 시작하기 쉽고 동시에 다른 프로그래밍 언어에서 제공되는 고급 기능을 제공합니다.
오픈 소스
그것은 오픈 소스 프로젝트입니다. 부담없이 참여하십시오 .
언어 사양
지원되는 버전
현재 지원되는 버전 은 5.6, 7.0 및 7.1입니다.
PHP의 각 릴리스 지점은 초기 안정 릴리스로부터 2 년 동안 완전히 지원됩니다. 이 2 년 간의 적극적인 지원이 끝난 후 각 지점은 중요한 보안 문제에 대해서만 1 년 동안 지원됩니다. 이 기간 동안의 릴리스는 필요에 따라 이루어집니다. 보고서의 수에 따라 여러 점 릴리스가 있거나 없을 수 있습니다.
지원되지 않는 버전
3 년간의 지원이 완료되면 지사의 수명이 다해 더 이상 지원되지 않습니다.
이슈 트래커
버그 및 기타 문제는 https://bugs.php.net/ 에서 추적됩니다.
메일 링리스트
PHP 개발 및 사용에 대한 토론은 PHP 메일 링리스트에서 제공 됩니다.
공식 문서
공식 PHP 문서 를 유지 관리하거나 번역하는 데 도움을주십시오.
edit.php.net 에서 편집기를 사용할 수 있습니다. 기고자에 대한 가이드를 확인하십시오.
버전
PHP 7.x
번역 | 지원까지 | 출시일 |
---|---|---|
7.1 | 2019-12-01 | 2016-12-01 |
7.0 | 2018-12-03 | 2015-12-03 |
PHP 5.x
번역 | 지원까지 | 출시일 |
---|---|---|
5.6 | 2018-12-31 | 2014-08-28 |
5.5 | 2016-07-21 | 2013-06-20 |
5.4 | 2015-09-03 | 2012-03-01 |
5.3 | 2014-08-14 | 2009-06-30 |
5.2 | 2011-01-06 | 2006-11-02 |
5.1 | 2006-08-24 | 2005-11-24 |
5.0 | 2005-09-05 | 2004-07-13 |
PHP 4.x
번역 | 지원까지 | 출시일 |
---|---|---|
4.4 | 2008-08-07 | 2005-07-11 |
4.3 | 2005-03-31 | 2002-12-27 |
4.2 | 2002-09-06 | 2002-04-22 |
4.1 | 2002-03-12 | 2001-12-10 |
4.0 | 2001-06-23 | 2000-05-22 |
레거시 버전
번역 | 지원까지 | 출시일 |
---|---|---|
3.0 | 2000-10-20 | 1998-06-06 |
2.0 | 1997-11-01 | |
1.0 | 1995-06-08 |
웹 서버의 HTML 출력
PHP를 사용하여 HTML 파일에 내용을 추가 할 수 있습니다. HTML이 웹 브라우저에 의해 직접 처리되는 동안 PHP 스크립트는 웹 서버에 의해 실행되고 결과 HTML은 브라우저로 전송됩니다.
다음 HTML 마크 업에는 Hello World!
추가 할 PHP 문이 들어 있습니다 Hello World!
출력 :
<!DOCTYPE html>
<html>
<head>
<title>PHP!</title>
</head>
<body>
<p><?php echo "Hello world!"; ?></p>
</body>
</html>
이 스크립트가 PHP 스크립트로 저장되고 웹 서버에 의해 실행되면 사용자 브라우저에 다음 HTML이 전송됩니다.
<!DOCTYPE html>
<html>
<head>
<title>PHP!</title>
</head>
<body>
<p>Hello world!</p>
</body>
</html>
echo
에는 바로 가기 구문이있어서 즉시 값을 인쇄 할 수 있습니다. PHP 5.4.0 이전 버전의이 짧은 구문은 short_open_tag 구성 설정이 활성화 된 경우에만 작동합니다.
예를 들어 다음 코드를 생각해보십시오.
<p><?= "Hello world!" ?></p>
출력은 다음과 같습니다.
<p><?php echo "Hello world!"; ?></p>
실제 응용 프로그램에서는 XSS ( 교차 사이트 스크립팅 ) 공격이나 텍스트 손상을 방지하기 위해 PHP가 HTML 페이지에 출력하는 모든 데이터를 적절하게 이스케이프 처리 해야합니다.
참고 자료 : 짧은 태그 ( <?= ... ?>
)의 올바른 사용을 포함하여 모범 사례를 설명하는 문자열 및 PSR-1 .
웹 서버의 HTML이 아닌 출력
경우에 따라 웹 서버로 작업 할 때 웹 서버의 기본 컨텐츠 유형을 대체해야 할 수도 있습니다. 예를 들어 데이터를 plain text
, JSON
또는 XML
로 보낼 필요가있을 수 있습니다.
header()
함수는 원시 HTTP 헤더를 보낼 수 있습니다. Content-Type
헤더를 추가하여 브라우저에 전송할 콘텐츠를 알릴 수 있습니다.
Content-Type
을 text/plain
으로 설정하는 다음 코드를 살펴 보겠습니다.
header("Content-Type: text/plain");
echo "Hello World";
그러면 다음 내용이 포함 된 일반 텍스트 문서가 생성됩니다.
안녕하세요 세계
JSON 컨텐츠를 생성하려면 대신 application/json
컨텐츠 유형을 사용하십시오.
header("Content-Type: application/json");
// Create a PHP data array.
$data = ["response" => "Hello World"];
// json_encode will convert it to a valid JSON string.
echo json_encode($data);
그러면 다음과 같은 내용으로 application/json
유형의 문서가 생성됩니다.
{ "응답": "Hello World"}
header()
함수는 PHP가 어떤 결과물을 생성하기 전에 호출되어야합니다. 그렇지 않으면 웹 서버는 이미 응답 헤더를 보낸 것입니다. 다음 코드를 살펴 보겠습니다.
// Error: We cannot send any output before the headers
echo "Hello";
// All headers must be sent before ANY PHP output
header("Content-Type: text/plain");
echo "World";
이렇게하면 경고가 나타납니다.
경고 : 헤더 정보를 수정할 수 없습니다 - 이미 보낸 헤더 (/dir/example.php:2에서 시작한 출력)는 /dir/example.php의 3 행에 있습니다.
header()
사용할 때 출력은 서버에서 보낸 첫 번째 바이트 여야합니다. 이런 이유로 PHP 시작 태그 <?php
앞에 파일의 시작 부분에 빈 줄이나 공백이 <?php
합니다. 같은 이유로, 그것이 최선의 방법으로 간주된다 ( PSR-2 는 PHP 종료 태그를 생략) ?>
에만 PHP가 포함 된 파일에서와 PHP 코드 블록에서 파일의 맨 끝에.
출력 버퍼링 섹션 을보고 나중에 출력 할 변수에 내용을 '붙잡는'방법을 배우십시오 (예 : 헤더 출력 후).
안녕, 세상!
PHP에서 출력물을 출력하기 위해 가장 널리 사용되는 언어 구조는 echo
:
echo "Hello, World!\n";
또는 print
를 사용할 수도 있습니다.
print "Hello, World!\n";
두 명령문 모두 약간의 차이점을 제외하면 동일한 기능을 수행합니다.
-
echo
는void
반환을,print
는1
의 값을 갖는int
를 반환한다. -
echo
는 인자를 여러 개 취할 수 있지만 (괄호는 사용하지 않음),print
인자는 하나의 인수 만 받는다. -
echo
는print
보다 약간 빠릅니다.
echo
와 print
는 둘 다 함수가 아닌 언어 구조입니다. 즉, 자신의 주장을 괄호로 묶지 않아도됩니다. 함수와의 외관상 일관성을 위해 괄호를 포함 할 수 있습니다. echo
와 print
의 광범위한 사용 예제는 다른 곳에서 구할 수 있습니다 .
다음 예제와 같이 C 스타일 printf
및 관련 함수를 사용할 수 있습니다.
printf("%s\n", "Hello, World!");
PHP에서 출력 변수를 포괄적으로 소개하려면 변수 값 출력하기를 참조하십시오.
명령어 분리
다른 C 스타일의 언어와 마찬가지로 각 문장은 세미콜론으로 끝납니다. 또한 종료 태그는 PHP 블록의 마지막 코드 행을 종료하는 데 사용됩니다.
PHP 코드의 마지막 줄이 세미콜론으로 끝나면 마지막 줄의 코드 다음에 코드가없는 경우 닫는 태그는 선택 사항입니다. 예를 들어, echo "No error";
후 닫기 태그를 생략 할 수 있습니다 echo "No error";
다음 예제에서 :
<?php echo "No error"; // no closing tag is needed as long as there is no code below
그러나 PHP 코드 블록 다음에 다른 코드가 있으면 닫는 태그는 더 이상 선택 사항이 아닙니다.
<?php echo "This will cause an error if you leave out the closing tag"; ?>
<html>
<body>
</body>
</html>
해당 코드 블록에 닫는 태그가있는 경우 PHP 코드 블록의 마지막 구문의 세미콜론을 생략 할 수도 있습니다.
<?php echo "I hope this helps! :D";
echo "No error" ?>
일반적으로 항상 세미콜론을 사용하고 마지막 PHP 코드 블록을 제외한 모든 PHP 코드 블록에 대해 종료 태그를 사용하는 것이 좋습니다 (PHP 코드 블록 다음에 코드가 더 이상없는 경우).
따라서 코드는 기본적으로 다음과 같이 보입니다.
<?php
echo "Here we use a semicolon!";
echo "Here as well!";
echo "Here as well!";
echo "Here we use a semicolon and a closing tag because more code follows";
?>
<p>Some HTML code goes here</p>
<?php
echo "Here we use a semicolon!";
echo "Here as well!";
echo "Here as well!";
echo "Here we use a semicolon and a closing tag because more code follows";
?>
<p>Some HTML code goes here</p>
<?php
echo "Here we use a semicolon!";
echo "Here as well!";
echo "Here as well!";
echo "Here we use a semicolon but leave out the closing tag";
PHP CLI
PHP는 CLI (Command Line Interface)를 사용하여 명령 행에서 직접 실행할 수도 있습니다.
CLI는 기본적으로 웹 서버의 PHP와 동일하지만 표준 입력 및 출력 측면에서 차이가 있습니다.
트리거링
PHP CLI는 PHP 코드를 실행하는 네 가지 방법을 제공합니다 :
- 표준 입력. 인수없이
php
명령을 실행하지만 PHP 코드를 파이프에 전달하십시오.echo '<?php echo "Hello world!";' | php
- 인수로 파일 이름. PHP 소스 파일의 이름을 첫 번째 인수로 사용하여
php
명령을 실행하십시오.php hello_world.php
- 인수로 코딩하십시오.
php
명령에서-r
옵션을 사용하고 실행 코드를 사용하십시오. 인수의 모든 것이 PHP 코드로 간주되므로<?php
open 태그는 필요하지 않습니다.php -r 'echo "Hello world!";'
- 대화 형 셸. 대화식 쉘을 시작하려면
php
명령에서-a
옵션을 사용하십시오. 그런 다음 PHP 코드를 입력 (또는 붙여 넣기)하고 return을 누릅니다 .$ php -a Interactive mode enabled php > echo "Hello world!"; Hello world!
산출
웹 서버 PHP에서 HTML 출력을 생성하는 모든 함수 또는 컨트롤은 stdout 스트림 (파일 설명자 1)에서 출력을 생성하는 데 사용할 수 있으며 웹 서버 PHP의 오류 로그에 출력을 생성하는 모든 작업은 stderr 스트림 (파일 기술자 2).
Example.php
<?php
echo "Stdout 1\n";
trigger_error("Stderr 2\n");
print_r("Stdout 3\n");
fwrite(STDERR, "Stderr 4\n");
throw new RuntimeException("Stderr 5\n");
?>
Stdout 6
셸 명령 줄 $ php Example.php 2>stderr.log >stdout.log;\
> echo STDOUT; cat stdout.log; echo;\
> echo STDERR; cat stderr.log\
STDOUT
Stdout 1
Stdout 3
STDERR
Stderr 4
PHP Notice: Stderr 2
in /Example.php on line 3
PHP Fatal error: Uncaught RuntimeException: Stderr 5
in /Example.php:6
Stack trace:
#0 {main}
thrown in /Example.php on line 6
입력
참조 : 명령 행 인터페이스 (CLI)
PHP 내장 서버
PHP 5.4+는 내장 된 개발 서버와 함께 제공됩니다. nginx 또는 Apache와 같은 프로덕션 HTTP 서버를 설치하지 않고도 응용 프로그램을 실행할 수 있습니다. 기본 제공 서버는 개발 및 테스트 목적으로 만 사용하도록 설계되었습니다.
-S
플래그를 사용하여 시작할 수 있습니다.
php -S <host/ip>:<port>
사용 예
- 다음을 포함하는
index.php
파일을 만듭니다.
<?php
echo "Hello World from built-in PHP server";
명령 행에서
php -S localhost:8080
명령을 실행하십시오.http://
포함하지 마십시오. 그러면 문서 루트로있는 현재 디렉토리를 사용하여 포트 8080에서 수신 대기중인 웹 서버가 시작됩니다.브라우저를 열고
http://localhost:8080
. "Hello World"페이지가 나타납니다.
구성
기본 문서 루트 (즉, 현재 디렉토리)를 덮어 -t
려면 -t
플래그를 사용하십시오.
php -S <host/ip>:<port> -t <directory>
예를 들어 프로젝트에 public/
디렉토리가 있다면 php -S localhost:8080 -t public/
사용하여 해당 디렉토리에서 프로젝트를 제공 할 수 있습니다.
로그
개발 서버에서 요청할 때마다 아래의 것과 같은 로그 항목이 명령 행에 기록됩니다.
[Mon Aug 15 18:20:19 2016] ::1:52455 [200]: /
PHP 태그
파일에 PHP 블록을 나타내는 세 가지 종류의 태그가 있습니다. PHP 파서는 코드를 해석 할 수 있도록 여는 태그와 (있는 경우) 닫는 태그를 찾고 있습니다.
표준 태그
이 태그는 PHP 코드를 파일에 삽입하는 표준 방법입니다.
<?php
echo "Hello World";
?>
에코 태그
이 태그는 모든 PHP 버전에서 사용할 수 있으며 PHP 5.4는 항상 활성화되어 있기 때문에 사용할 수 있습니다. 이전 버전에서는 에코 태그를 짧은 태그와 함께 사용할 수있었습니다.
<?= "Hello World" ?>
짧은 태그
short_open_tag
옵션을 사용하여 태그를 사용 또는 사용 중지 할 수 있습니다.
<?
echo "Hello World";
?>
짧은 태그 :
- 모든 주요 PHP 코딩 표준 에서 허용되지 않습니다.
- 공식 문서 에서 권장하지 않는다.
- 대부분의 배포판에서는 기본적으로 비활성화되어 있습니다.
- 인라인 XML 처리 명령에 간섭
- 대부분의 오픈 소스 프로젝트에서 코드 제출시 허용되지 않습니다.
ASP 태그
asp_tags
옵션을 사용하면 ASP 스타일 태그를 사용할 수 있습니다.
<%
echo "Hello World";
%>
이들은 역사적인 특질이며 절대로 사용해서는 안됩니다. 그것들은 PHP 7.0에서 삭제되었습니다.