Во-первых, вам нужно установить php5-fpm
и php7.0-fpm
из PPA Ondřej Surý для совместной установки php5 и php7.0. :
sudo apt-get install python-software-properties
sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php
Затем мы nginx
предлагаем использовать пакеты FPM. Итак, установите пакеты соответственно:
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
только в состоянии быть так же хорошо, как ваши конфигурации. Скорее всего, у вас есть блок обработки PHP на ваших блоках сервера nginx, подобный этому (из примера конфигурации «по умолчанию»):
# 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
. В php7.0 на Xenial это закончится примерно так (извлечено из исправления, недавно загруженного в пакет 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.6
используются сокеты вместо встроенного php5
сокета (который мы только что удалили).
Затем используйте второй тестовый домен для запуска php7.0
тестирования. Тем не менее, обязательно сделайте копию своего сайта, если вы хотите сделать это - вероятно, вам потребуется отдельная тестовая копия, чтобы после того, как вы закончили работу с ней php7.0
, вы могли просто «переключиться» без вопрос.
К сожалению, не существует простого способа создать php5
и php7.0
работать в одном и том же блоке сервера, не изменяя пути для вашего сайта, приложений и т. Д., Чтобы иметь один для php5
и один для php7.0
; такая переработка сайтов может стать неприятной, поэтому предлагается запустить две отдельные копии кода сайта, одну для php7.0
миграции и одну для php5
работы.
*php5.6*
пакетов, которые предоставляет Ondřej, и удалять простыеphp5
пакеты.fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;