Jump to content

PHP

From DawoumWiki, the free Mathematics self-learning
PHP
ParadigmImperative, functional, object-oriented, procedural, reflective
Designed byRasmus Lerdorf
DeveloperZend Technologies
First appeared1995; 29 years ago (1995)[1]
Stable release
7.2.10[2] / September 13, 2018; 5 years ago (2018-09-13)
Preview release
7.3.0RC1[3] / September 13, 2018; 5 years ago (2018-09-13)
Typing disciplineDynamic, weak

since version 7.0:

Gradual[4]
Implementation languageC (primarily; some components C++)
OSUnix-like, Windows
LicensePHP License (most of Zend engine under Zend Engine License)
Filename extensions.php, .phtml, .php3, .php4, .php5, .php7, .phps, .php-s, .pht
Websitesecure.php.net
Major implementations
Zend Engine, HHVM, Phalanger, Quercus, Parrot
Influenced by
Perl, C, C++, Java, Tcl[1]
Influenced
Falcon, Hack

PHP:Hypertext Preprocessor (또는 간단히 PHP)는 원래 웹 개발에 대해 설계된 일반-목적 프로그래밍 언어입니다. 그것은 1994년 Rasmus Lerdorf에 의해 원래 만들어졌습니다;[5] PHP 레퍼런스 구현은 PHP 그룹에 의해 이제 생성됩니다.[6] PHP는 원래 개인 홈 페이지(Personal Home Page)[5]를 의미했었지만, 그것은 이제 재귀적 약자 PHP: Hypertext Preprocessor를 의미합니다.[7]

PHP 코드는, HTML 코드에 내장되는, 명령-줄 인터페이스 (CLI)로 실행되어질 수 있거나, 다양한 웹 템플릿 시스템, 웹 컨텐츠 관리 시스템, 그리고 웹 프레임워크와 함께 결합에서 사용될 수 있습니다. PHP 코드는 보통 웹 서버에서 모듈 또는 Common Gateway Interface (CGI) 실행 파일로 구현된 PHP 해석기에 의해 처리됩니다. 웹 서버는 생성된 웹 페이지와 함께, 이미지를 포함하는, 데이터의 임의의 유형일 수 있는 해석된 그리고 실행된 PHP 코드의 결과를 결합합니다. PHP는 독립형 그래픽 응용 프로그램[8] 및 로봇 드론 제어[9]와 같은, 웹 컨텍스트 외부의 많은 프로그래밍 작업에 대해 사용될 수 있습니다.

젠드 엔진에 의해 구동되는, 표준 PHP 해석기는 PHP 라이선스 아래에서 공개된 자유 소프트웨어입니다. PHP는 널리 포팅되어 왔고 거의 모든 각 운영 시스템플랫폼에서 대부분의 웹 서버에 무료로 배포할 수 있습니다.[10]

PHP 언어는 2014년까지 서면 공식 사양 또는 표준없이 진화했으며, 원래의 구현은 다른 구현이 따라야 할 사실상(de facto)의 표준으로 기능합니다. 2014년부터 공식 PHP 사양을 작성하는 작업이 진행되었습니다.[11]

Installation

데비안 저장소의 버전은 2022년 4월 당시 php-7.4를 지원합니다.

Latest package

데비안 php 패키지 관리자는 ondrej이고, 최신의 php 버전을 데비안과 우분투에 대해 제공하고 있습니다. 아래의 과정으로 데비안에서 최근의 php8.1을 설치할 수 있습니다:

  • sudo apt install -y lsb-release ca-certificates apt-transport-https software-properties-common gnupg2
  • echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list
  • wget -qO - https://packages.sury.org/php/apt.gpg | sudo tee /etc/apt/trusted.gpg.d/php.gpg > /dev/null
  • sudo apt install php8.1

Ubuntu

데비안과 마찬가지로 ondrej 패키지를 설치할 수 있습니다:

  • sudo add-apt-repository ppa:ondrej/php
  • sudo apt update

이제 2개의 판을 동시에 설치가 가능합니다.

  • sudo apt install php7.4-fpm
  • sudo apt install php8.1-fpm

Module for Mediawiki

미디어위키 구동을 위해 필요한 php 관련 패키지 목록입니다. Php 8.0에서 없는 패키지는 설치하지 않아도 됩니다.

  • php7.4-curl
  • php7.4-gd
  • php7.4-intl
  • php7.4-mbstring
  • php7.4-mysql
  • php7.4-xml

데비안에서, php7.4-fpm 설치시에 php7.4-cli php7.4-common php7.4-json php7.4-opcache php7.4-readline은 같이 설치됩니다.

Version change

설정에서 선택할 수 있는 대화형 방법입니다. 아래의 3가지 명령 중 하나를 사용할 수 있습니다:

  • sudo update-alternatives --config php
  • sudo update-alternatives --config phar
  • sudo update-alternatives --config phar.phar
  • sudo update-alternatives --config phpize
  • sudo update-alternatives --config php-config

명령어로 바로 바꾸는 방법입니다:

  • sudo update-alternatives --set php /usr/bin/php8.0
  • sudo update-alternatives --set phar /usr/bin/phar8.0
  • sudo update-alternatives --set phar.phar /usr/bin/phar.phar8.0
  • sudo update-alternatives --set phpize /usr/bin/phpize8.0
  • sudo update-alternatives --set php-config /usr/bin/php-config8.0

Configuration

PHP의 구성은 /etc/php 아래에 존재하며, 각 버전별로 디렉토리가 존재합니다. 접근하는 방법에 따라서 해당 디렉토리의 php.ini를 수정해야 합니다.

Nginx

Nginx 서버가 설치되면, /etc/nginx/sites-available/default 파일에 server 섹션에 해당 설정 부분이 보입니다.

    location ~ \.php$ {
       include snippets/fastcgi-php.conf;
       fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }

설정이 적용되되면, nginx를 재시작해야 합니다.

  • sudo systemctl restart nginx

PHP

Php-fpm 설정은 /etc/php/7.4/fpm/php.ini 파일에서 변경해야 합니다.

시간대 설정
date.timezone = Asia/Seoul
Upload 크기 변경
file_uploads = On
upload_max_filesize = 10M ;기본값은 2M입니다.
post_max_size = 20M ;기본값은 8M입니다.
Memory Limit
어떤 PHP 스크립트는 구동하는데 많은 메모리가 소모됩니다. 이런 연유로 21%의 서버가 다운된다고 하니, 해당 항목을 늘려줄 필요가 있겠습니다.
memory_limit = 128M
실행시간 늘리기
미디어위키 설치나 Special:Import할 때 타임아웃에 걸리는 경우가 있습니다.
max_execution_time = 300 ;기본값은 30입니다.
max_input_time = 300
  • Nginx 설정에서도 시간을 널려줍니다:
location ~ \.php$ {
    include /etc/nginx/fastcgi_params;
    fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
    fastcgi_read_timeout 300;     # 추가한 내용
}

Trobleshootings

PHP/Troubleshootings

References

  1. ^ a b Lerdorf, Rasmus (2007-04-26). "PHP on Hormones – history of PHP presentation by Rasmus Lerdorf given at the MySQL Conference in Santa Clara, California". The Conversations Network. Retrieved 2009-12-11.
  2. ^ Golemon, Sara; Collet, Remi (13 September 2018). "PHP 7.2.10 Released". php.announce (Mailing list). Retrieved 13 September 2018.
  3. ^ "News Archive — 2018". 13 September 2018. PHP 7.3.0RC1 Released. Retrieved 13 September 2018.
  4. ^ "PHP: Function arguments - Manual". secure.php.net.
  5. ^ a b "History of PHP". php.net.
  6. ^ "History of PHP and related projects". The PHP Group. Retrieved 2008-02-25.
  7. ^ PHP Manual: Preface, www.php.net.
  8. ^ "Introduction: What can PHP do?". PHP Manual. Retrieved 2009-03-05.
  9. ^ :helicopter: Port of node-ar-drone which allows user to control a Parrot AR Drone over PHP: jolicode/php-ar-drone, JoliCode, 2019-01-11, retrieved 2019-02-23
  10. ^ "Embedding PHP in HTML". O'Reilly. 2001-05-03. Retrieved 2008-02-25.
  11. ^ Jackson, Joab (2014-07-31). "PHP gets a formal specification, at last". ITworld. IDG.

External Resources