개발 꿀팁/PHP

Tomcat에서 PHP를 지원하는 방법

Jammie 2022. 7. 19. 15:37
반응형

자바 개발자들은 톰캣이 자바 웹 프로젝트를 배치하는 데 쓰인다는 것을 알고 있다.그동안 PHP프로젝트와 동일한 도메인, 동일한 포트를 요구하는 프로젝트가 있었는데, nginx를 사용하지 않고 어떻게 구현이 가능합니까? 자바 Bridge를 통해 tomcat이 php 실행을 지원할 수 있다는 것을 알게 되었다. 우리도 한번 해 보자. 자세한 절차는 다음과 같습니다.


1.환경준비

php 환경 설치, 자바 가상 머신 설치, tomcat

이들 툴의 최소 구성은 php 5.x, 자바 6 이상, 톰캣 6 이상이다.



2.톰캣 설정

PHP/Java Bridge의 Java Bridge.jar, php-servlet.jar 및 php-script.jar를 Tomcat의 lib 디렉토리에 복사합니다.

tomcat 설치 디렉터리의 conf 폴더에 있는 web.xml 파일을 수정하고 web-app 탭에 다음 코드를 추가합니다

<listener>
 <listener-class>php.java.servlet.ContextLoaderListener</listener-class>
 </listener>
 <servlet>
 <servlet-name>PhpJavaServlet</servlet-name>
 <servlet-class>php.java.servlet.PhpJavaServlet</servlet-class>
 </servlet>
 <servlet>
 <servlet-name>PhpCGIServlet</servlet-name>
 <servlet-class>php.java.servlet.fastcgi.FastCGIServlet</servlet-class>
 <init-param>
 <param-name>prefer_system_php_exec</param-name>
 <param-value>On</param-value>
 </init-param>
 <init-param>
 <param-name>php_include_java</param-name>
 <param-value>Off</param-value>
 </init-param>
 </servlet>
 <servlet-mapping>
 <servlet-name>PhpJavaServlet</servlet-name>
 <url-pattern>*.phpjavabridge</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
 <servlet-name>PhpCGIServlet</servlet-name>
 <url-pattern>*.php</url-pattern>
 </servlet-mapping>

위의 단계를 완료한 후 tomcat을 재시작하면 어떠한 공정에서도 php 스크립트를 실행할 수 있지만 webapps/에서는 직접 실행할 수 없습니다. tomcat 홈페이지에서 cgiPathPrefix에 대한 설명은 다음과 같습니다.

The CGI search path will start at the web application root directory + File.separator + this prefix


webapps 디렉터리에서 index.php 파일에 직접 액세스하기

<?php phpinfo();?>

방문할 때 나타나다

반응형