nginx를 사용하여 우분투에서 PHP 5 옆에 PHP 7을 설치하는 방법


9

PHP 7을 시도하고 동시에 다른 사이트가 PHP 5에서 작동하도록 PHP 7에서 작동하도록하고 싶습니다. 도메인 가상 호스트 설정에서 실행할 PHP를 결정할 수 있습니다.

나는 PHP 버전 관리를보고 두 가지 버전을 실행할 수 있음을 알았지 만, 찾은 버전은 아파치처럼 보입니다. nginx 에서이 작업을 수행하는 방법에 대한 더 명확한 지침을 찾고 있습니다. 중요한 경우 hhvm도 실행 중입니다.

답변:


11

첫째, 당신은 설치해야 php5-fpmphp7.0-fpm에서 공동 설치 PHP5와 php7.0에 대한 드레이 Surý의 PPA. :

sudo apt-get install python-software-properties
sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php

그런 다음 nginxFPM 패키지 사용을 제안합니다. 따라서 패키지를 적절하게 설치하십시오.

sudo apt-get update

# We need to ***remove*** php5 packages, so we can use php5.6 packages
# from the PPA instead
sudo apt-get remove php5-common
sudo apt-get autoremove

# Now we install php5.6 packages.
sudo apt-get install php5.6-fpm

# Now, install php7.0-fpm.  You may need to install separate PHP plugins
# for databases, extensions, etc. later.
sudo apt-get install php7.0-fpm

출처 : "php 7 설치 방법"에 대한 답변 질문 , 사용자 정의 의견 및 자신의 수정.


둘째, nginx. nginx구성만큼 좋을 수 있습니다. nginx 서버 블록에 다음과 비슷한 PHP 핸들링 블록이있을 가능성이 높습니다 ( '기본'예제 설정에서).

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

location ~ \.php$ {
    include snippets/fastcgi-php.conf;

    # With php5-fpm:
    fastcgi_pass unix:/var/run/php5-fpm.sock;
}

이 구성은로만 전달됩니다 php5-fpm. 실제로 이것은 전체 서버 블록에 적용됩니다. 가장 쉬운 방법은 두 번째 서버 블록 (예 :)을 가지고 test.domain.tld대신 PHP 7.0 fastcgi_pass대상을 제공하는 것 입니다. Xenial의 php7.0에서 이것은 최근에 Xenial nginx 패키지에 업로드 된 수정 프로그램에서 추출 된 것과 같은 결과가 될 것입니다. 그러나 Ondrej의 패키지 레이아웃을 알지 못하므로 정확한 세부 정보를 제공 할 수 없습니다 (확인 /etc/php7.0/fpm/pool.d/www.conf또는 청취 위치를 결정하는 것과 비슷 함) :

location ~ \.php$ {
    include snippets/fastcgi-php.conf;

    # With php7.0-fpm:
    fastcgi_pass unix:/var/run/php7.0-fpm.sock;
}

내장 소켓 (방금 제거한 소켓) 대신 소켓이 사용 되는지 php5확인하려면 블록 과 비슷한 작업을 수행해야합니다 .php5.6php5

그런 다음 두 번째 테스트 도메인을 사용하여 테스트를 실행하십시오 php7.0. 그러나 원하는 경우 사이트 사본을 만드십시오. 작업을 마치면 php7.0``전환 ''할 수 있도록 별도의 테스트 사본이 필요할 수 있습니다. 발행물.

불행하게도, 더 쉬운 방법도하지 않습니다에,이 php5php7.0같은 서버 블록 내에서 작업하지 않는 한 가질 수 등 사이트, 응용 프로그램에 대한 귀하의 경로를 변경하지 않고 php5하나를 들어 php7.0; 이러한 사이트 재 작업은 번거로울 수 있으므로 사이트 코드의 별도 사본 두 개 ( php7.0마이그레이션 및 php5프로덕션 용) 를 실행하라는 제안이 있습니다 .


이 방법을 선택하면 *php5.6*Ondřej가 제공 하는 패키지 를 사용 하고 일반 php5패키지를 제거해야 합니다.
muru

@muru 아마도 맞을 것입니다.
Thomas Ward

감사! 이것은 내가 예상했던 것보다 잘 작동했습니다. 처음에는 pear와 cli에 문제가 있었지만 업데이트해야 할 저장소의 버그 였고 효과가있었습니다. 내 사이트는 php7에서 정말 빠르게 작동합니다. 놀랍다.
공포의 세미콜론

fpm 양말의 이름도 5.6이었습니다.
toster-cx 2019

거의 2018 년 현재, NGINX의 php5.6 설정은fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;
Ecksters
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.