PHP:Hypertext Preprocessor (또는 간단히 PHP)는 원래 웹 개발에 대해 설계된 일반-목적 프로그래밍 언어입니다. 그것은 1994년 Rasmus Lerdorf에 의해 원래 만들어졌습니다; PHP 레퍼런스 구현은 PHP 그룹에 의해 이제 생성됩니다. PHP는 원래 개인 홈 페이지(Personal Home Page)를 의미했었지만, 그것은 이제 재귀적 약자 PHP: Hypertext Preprocessor를 의미합니다.
PHP 코드는, HTML 코드에 내장되는, 명령-줄 인터페이스 (CLI)로 실행되어질 수 있거나, 다양한 웹 템플릿 시스템, 웹 컨텐츠 관리 시스템, 그리고 웹 프레임워크와 함께 결합에서 사용될 수 있습니다. PHP 코드는 보통 웹 서버에서 모듈 또는 Common Gateway Interface (CGI) 실행 파일로 구현된 PHP 해석기에 의해 처리됩니다. 웹 서버는 생성된 웹 페이지와 함께, 이미지를 포함하는, 데이터의 임의의 유형일 수 있는 해석된 그리고 실행된 PHP 코드의 결과를 결합합니다. PHP는 독립형 그래픽 응용 프로그램[8] 및 로봇 드론 제어와 같은, 웹 컨텍스트 외부의 많은 프로그래밍 작업에 대해 사용될 수 있습니다.
젠드 엔진에 의해 구동되는, 표준 PHP 해석기는 PHP 라이선스 아래에서 공개된 자유 소프트웨어입니다. PHP는 널리 포팅되어져 왔고 거의 모든 각 운영 시스템과 플랫폼에서 대부분의 웹 서버에 무료로 배포할 수 있습니다.
PHP 언어는 2014년까지 서면 공식 사양 또는 표준없이 진화했으며, 원래의 구현은 다른 구현이 따라야 할 사실상(de facto)의 표준으로 기능합니다. 2014년부터 공식 PHP 사양을 작성하는 작업이 진행되었습니다.
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; # 추가한 내용
}