PHPPHP 시작하기


비고

여기에 이미지 설명을 입력하십시오.

PHP (PHP : Hypertext Preprocessor의 재귀 약자)는 널리 사용되는 오픈 소스 프로그래밍 언어입니다. 특히 웹 개발에 적합합니다. PHP의 독특한 점은 초보자와 숙련 된 개발자 모두에게 도움이된다는 것입니다. 그것은 진입 장벽이 낮기 때문에 시작하기 쉽고 동시에 다른 프로그래밍 언어에서 제공되는 고급 기능을 제공합니다.

오픈 소스

그것은 오픈 소스 프로젝트입니다. 부담없이 참여하십시오 .

언어 사양

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>
 
PHP 5.x 5.4

echo 에는 바로 가기 구문이있어서 즉시 값을 인쇄 할 수 있습니다. PHP 5.4.0 이전 버전의이 짧은 구문은 short_open_tag 구성 설정이 활성화 된 경우에만 작동합니다.

예를 들어 다음 코드를 생각해보십시오.

<p><?= "Hello world!" ?></p>
 

출력은 다음과 같습니다.

<p><?php echo "Hello world!"; ?></p>
 

실제 응용 프로그램에서는 XSS ( 교차 사이트 스크립팅 ) 공격이나 텍스트 손상을 방지하기 위해 PHP가 HTML 페이지에 출력하는 모든 데이터를 적절하게 이스케이프 처리 해야합니다.

참고 자료 : 짧은 태그 ( <?= ... ?> )의 올바른 사용을 포함하여 모범 사례를 설명하는 문자열PSR-1 .

안녕, 세상!

PHP에서 출력물을 출력하기 위해 가장 널리 사용되는 언어 구조는 echo :

echo "Hello, World!\n";
 

또는 print 를 사용할 수도 있습니다.

print "Hello, World!\n";
 

두 명령문 모두 약간의 차이점을 제외하면 동일한 기능을 수행합니다.

  • echovoid 반환을, print1 의 값을 갖는 int 를 반환한다.
  • echo 는 인자를 여러 개 취할 수 있지만 (괄호는 사용하지 않음), print 인자는 하나의 인수 만 받는다.
  • echoprint 보다 약간 빠릅니다.

echoprint 는 둘 다 함수가 아닌 언어 구조입니다. 즉, 자신의 주장을 괄호로 묶지 않아도됩니다. 함수와의 외관상 일관성을 위해 괄호를 포함 할 수 있습니다. echoprint 의 광범위한 사용 예제는 다른 곳에서 구할 수 있습니다 .

다음 예제와 같이 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";
 

웹 서버의 HTML이 아닌 출력

경우에 따라 웹 서버로 작업 할 때 웹 서버의 기본 컨텐츠 유형을 대체해야 할 수도 있습니다. 예를 들어 데이터를 plain text , JSON 또는 XML 로 보낼 필요가있을 수 있습니다.

header() 함수는 원시 HTTP 헤더를 보낼 수 있습니다. Content-Type 헤더를 추가하여 브라우저에 전송할 콘텐츠를 알릴 수 있습니다.

Content-Typetext/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 내장 서버

PHP 5.4+는 내장 된 개발 서버와 함께 제공됩니다. nginx 또는 Apache와 같은 프로덕션 HTTP 서버를 설치하지 않고도 응용 프로그램을 실행할 수 있습니다. 기본 제공 서버는 개발 및 테스트 목적으로 만 사용하도록 설계되었습니다.

-S 플래그를 사용하여 시작할 수 있습니다.

php -S <host/ip>:<port>
 

사용 예

  1. 다음을 포함하는 index.php 파일을 만듭니다.
<?php
echo "Hello World from built-in PHP server";
 
  1. 명령 행에서 php -S localhost:8080 명령을 실행하십시오. http:// 포함하지 마십시오. 그러면 문서 루트로있는 현재 디렉토리를 사용하여 포트 8080에서 수신 대기중인 웹 서버가 시작됩니다.

  2. 브라우저를 열고 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 CLI

PHP는 CLI (Command Line Interface)를 사용하여 명령 행에서 직접 실행할 수도 있습니다.

CLI는 기본적으로 웹 서버의 PHP와 동일하지만 표준 입력 및 출력 측면에서 차이가 있습니다.

트리거링

PHP CLI는 PHP 코드를 실행하는 네 가지 방법을 제공합니다 :

  1. 표준 입력. 인수없이 php 명령을 실행하지만 PHP 코드를 파이프에 전달하십시오.
    echo '<?php echo "Hello world!";' | php
  2. 인수로 파일 이름. PHP 소스 파일의 이름을 첫 번째 인수로 사용하여 php 명령을 실행하십시오.
    php hello_world.php
  3. 인수로 코딩하십시오. php 명령에서 -r 옵션을 사용하고 실행 코드를 사용하십시오. 인수의 모든 것이 PHP 코드로 간주되므로 <?php open 태그는 필요하지 않습니다.
    php -r 'echo "Hello world!";'
  4. 대화 형 셸. 대화식 쉘을 시작하려면 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 블록을 나타내는 세 가지 종류의 태그가 있습니다. PHP 파서는 코드를 해석 할 수 있도록 여는 태그와 (있는 경우) 닫는 태그를 찾고 있습니다.

표준 태그

이 태그는 PHP 코드를 파일에 삽입하는 표준 방법입니다.

<?php
    echo "Hello World";
?>
 
PHP 5.x 5.4

에코 태그

이 태그는 모든 PHP 버전에서 사용할 수 있으며 PHP 5.4는 항상 활성화되어 있기 때문에 사용할 수 있습니다. 이전 버전에서는 에코 태그를 짧은 태그와 함께 사용할 수있었습니다.

<?= "Hello World" ?>
 

짧은 태그

short_open_tag 옵션을 사용하여 태그를 사용 또는 사용 중지 할 수 있습니다.

<?
    echo "Hello World";
?>
 

짧은 태그 :

  • 모든 주요 PHP 코딩 표준 에서 허용되지 않습니다.
  • 공식 문서 에서 권장하지 않는다.
  • 대부분의 배포판에서는 기본적으로 비활성화되어 있습니다.
  • 인라인 XML 처리 명령에 간섭
  • 대부분의 오픈 소스 프로젝트에서 코드 제출시 허용되지 않습니다.
PHP 5.x 5.6

ASP 태그

asp_tags 옵션을 사용하면 ASP 스타일 태그를 사용할 수 있습니다.

<%
    echo "Hello World";
%>
 

이들은 역사적인 특질이며 절대로 사용해서는 안됩니다. 그것들은 PHP 7.0에서 삭제되었습니다.