mod_php는 무엇입니까?


108

Zend 튜토리얼을 진행하는 동안 다음과 같은 진술을 발견했습니다.

.htaccess의 php_flag 설정은 mod_php를 사용하는 경우에만 작동합니다.

누군가 그것이 의미하는 바를 설명 할 수 있습니까?

답변:


158

mod_phpApache 모듈 로서의 PHP를 의미 합니다 .

기본적으로 mod_phpApache 모듈로 로드 할 때 Apache가 PHP 파일을 해석 할 수 있습니다 (에서 해석 됨 mod_php) .


편집 : Apache로 작업 할 때 PHP를 실행하는 방법 에는 (적어도) 두 가지가 있습니다.

  • CGI 사용 : PHP 프로세스는 Apache에 의해 시작되며 Apache 자체가 아닌 PHP 코드를 해석하는 PHP 프로세스입니다.
  • PHP를 Apache 모듈 (이라고 함 mod_php)로 사용 : PHP 인터프리터는 Apache 프로세스 내에 일종의 "내장"됩니다. 외부 PHP 프로세스가 없습니다. 즉, Apache와 PHP가 더 잘 통신 할 수 있습니다 .


그리고 코멘트 다음에 다시 편집하십시오 : CGI를 사용하거나 mod_php귀하에게 달려 있습니다 : 웹 서버의 구성 문제 일뿐입니다.

현재 서버에서 어떤 방식이 사용되고 있는지 확인하려면 다음과 같은 출력을 확인할 수 있습니다 phpinfo(). PHP가 mod_php (또는 mod_php5) 또는 CGI를 통해 실행되는지 여부를 나타내는 무언가가 있어야합니다 .

php_sapi_name()함수를 살펴볼 수도 있습니다 . 웹 서버와 PHP 사이의 인터페이스 유형을 반환합니다 .


Apache의 구성 파일을 체크인하면를 사용할 때 다음과 같은 줄 mod_php이 있어야합니다 LoadModule.

LoadModule php5_module        modules/libphp5.so

(오른쪽의 파일 이름은 다를 수 있습니다. 예를 들어 Windows에서는 .dll)


xampp를 사용하여 php, apache 및 mysql 패키지를 설치했습니다 ... 그렇다면 내 설정은 무엇입니까?
SpikETidE

PHP가 현재 작동하지 않는 경우 활성화해야합니다. PHP가 이미 작동하고 있다면 CGI를 사용해야합니다.이 경우 모듈을 활성화하는 것 이상을 수행해야 할 것입니다. 모듈이 시스템에 존재하지 않을 수도 있습니다.
d11wtq

1
예..!. phpinfo ()를 실행하면 mod_php5가 Loaded Modules 섹션에 포함되어 있음을 알 수 있습니다 .... 그리고 그것은 아파치 모듈로 실행되고 있다는 것을 의미합니다 ...
SpikETidE

3
mod_php가장 일반적인 구성입니다.
troelskn

@Pascal, 나는 mod_php진짜 PHP가 아니라고 말하고 싶다 . 아파치 애드온 일뿐입니다. 또는 오히려 PHP가 정확히 무엇을 의미합니까?에 대한 정의 로 답을 시작해야한다고 생각합니다 .
Pacerier

58

이 답변은 TuxRadar 에서 가져온 것입니다 .

웹 서버를 통해 PHP를 실행할 때 두 가지 옵션이 있습니다. PHP의 CGI SAPI를 사용하여 실행하거나 웹 서버용 모듈로 실행하는 것입니다. 각각 고유 한 이점이 있지만 전반적으로 모듈이 일반적으로 선호됩니다.

PHP를 CGI로 실행한다는 것은 기본적으로 웹 서버에 PHP 실행 파일의 위치를 ​​알려주고 서버가 해당 실행 파일을 실행하여 페이지를 방문 할 때마다 호출 한 스크립트를 제공한다는 것을 의미합니다. 즉, 페이지를로드 할 때마다 PHP는 php.ini를 읽고 설정을 지정해야하며 모든 확장을로드 한 다음 스크립트 구문 분석 작업을 시작해야합니다. 반복되는 작업이 많이 있습니다.

PHP를 모듈로 실행하면 PHP는 말 그대로 웹 서버 내부에 위치합니다. 한 번만 시작하고 설정과 확장을 한 번만로드하며 세션간에 정보를 저장할 수도 있습니다. 예를 들어, PHP 액셀러레이터는 CGI 버전으로는 불가능한 요청을 통해 캐시 된 데이터를 저장할 수있는 PHP에 의존합니다.

PHP를 모듈로 사용하는 명백한 이점은 속도입니다. CGI에서 모듈로 변환하면 속도가 크게 향상됩니다. 많은 사람들, 특히 Windows 사용자는이를 인식하지 못하고 php.exe CGI SAPI를 계속 사용합니다. 이는 부끄러운 일입니다. 모듈은 일반적으로 3 ~ 5 배 더 빠릅니다.

그러나 CGI 버전을 사용하면 한 가지 중요한 이점이 있으며, PHP는 페이지를로드 할 때마다 설정을 읽는다는 것입니다. PHP가 모듈로 실행되면 php.ini 파일에서 변경 한 사항은 웹 서버를 다시 시작할 때까지 적용되지 않습니다. 따라서 많은 새로운 설정을 테스트하고 즉각적인 응답을 확인하려는 경우 CGI 버전이 선호됩니다.


@JohannEchavarria, 많은 것을 추가하지 않았다면 서버를 다시 시작하는 데 몇 초 밖에 걸리지 않습니다. SSD가있는 "일반적인"최신 시스템의 경우 2 초 미만입니다.
Pacerier

12

서버에 php 모듈이 설치되어 있어야 php 코드를 구문 분석 할 수 있습니다.

우분투를 사용하는 경우 다음을 사용하여 쉽게 할 수 있습니다.

sudo apt-get install apache2

sudo apt-get install php5

sudo apt-get install libapache2-mod-php5

sudo /etc/init.d/apache2 restart

그렇지 않으면 php로 아파치를 컴파일 할 수 있습니다 : http://dan.drydog.com/apache2php.html

서버 OS를 지정하면 다른 사람들이보다 구체적으로 대답하는 데 도움이됩니다.



3

이 답변에 추가하면 mod_php는 PHP를 사용하기 위해 HTTPD 서버에서 사용할 수있는 가장 오래되고 가장 느린 방법입니다. Apache HTTPD 및 PHP의 이전 버전을 실행하지 않는 한 권장되지 않습니다. php-fpm 및 proxy_cgi가 선호되는 방법입니다.


0

mod_php는 PHP 인터프리터입니다.

문서에서 mod_php의 한 가지 중요한 점은 다음과 같습니다.

"mod_php는 스레드로부터 안전하지 않으며 가능한 가장 느린 구성 인 prefork mpm (다중 프로세스, 스레드 없음)을 고수하도록 강요합니다."

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.