Zend 튜토리얼을 진행하는 동안 다음과 같은 진술을 발견했습니다.
.htaccess의 php_flag 설정은 mod_php를 사용하는 경우에만 작동합니다.
누군가 그것이 의미하는 바를 설명 할 수 있습니까?
Zend 튜토리얼을 진행하는 동안 다음과 같은 진술을 발견했습니다.
.htaccess의 php_flag 설정은 mod_php를 사용하는 경우에만 작동합니다.
누군가 그것이 의미하는 바를 설명 할 수 있습니까?
답변:
mod_php
Apache 모듈 로서의 PHP를 의미 합니다 .
기본적으로 mod_php
Apache 모듈로 로드 할 때 Apache가 PHP 파일을 해석 할 수 있습니다 (에서 해석 됨 mod_php
) .
편집 : Apache로 작업 할 때 PHP를 실행하는 방법 에는 (적어도) 두 가지가 있습니다.
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
)
mod_php
가장 일반적인 구성입니다.
mod_php
진짜 PHP가 아니라고 말하고 싶다 . 아파치 애드온 일뿐입니다. 또는 오히려 PHP가 정확히 무엇을 의미합니까?에 대한 정의 로 답을 시작해야한다고 생각합니다 .
웹 서버를 통해 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 버전이 선호됩니다.
서버에 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를 지정하면 다른 사람들이보다 구체적으로 대답하는 데 도움이됩니다.
이는 PHP를 CGI 스크립트로 시작하는 대신 Apache에 모듈로 설치해야 함을 의미합니다.