Во-первых, вам нужно установить 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пакеты.