PHP
![]() | |
Paradigm | Imperative, functional, object-oriented, procedural, reflective |
---|---|
Designed by | Rasmus Lerdorf |
Developer | Zend Technologies |
First appeared | 1995[1] |
Stable release | 7.2.10[2]
/ September 13, 2018 |
Preview release | 7.3.0RC1[3]
/ September 13, 2018 |
Typing discipline | Dynamic, weak
since version 7.0: Gradual[4] |
Implementation language | C (primarily; some components C++) |
OS | Unix-like, Windows |
License | PHP License (most of Zend engine under Zend Engine License) |
Filename extensions | .php, .phtml, .php3, .php4, .php5, .php7, .phps, .php-s, .pht |
Website | secure |
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
References
- ^ 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.
- ^ Golemon, Sara; Collet, Remi (13 September 2018). "PHP 7.2.10 Released". php.announce (Mailing list). Retrieved 13 September 2018.
- ^ "News Archive — 2018". 13 September 2018. PHP 7.3.0RC1 Released. Retrieved 13 September 2018.
- ^ "PHP: Function arguments - Manual". secure.php.net.
- ^ a b "History of PHP". php.net.
- ^ "History of PHP and related projects". The PHP Group. Retrieved 2008-02-25.
- ^ PHP Manual: Preface, www.php.net.
- ^ "Introduction: What can PHP do?". PHP Manual. Retrieved 2009-03-05.
- ^ :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
- ^ "Embedding PHP in HTML". O'Reilly. 2001-05-03. Retrieved 2008-02-25.
- ^ Jackson, Joab (2014-07-31). "PHP gets a formal specification, at last". ITworld. IDG.