Разные версии php для разных сайтов

Речь в заметке пойдёт о модуле PHP7, покдлюченном как модуль апача на всём сервере, и PHP5.6, подключенном как PHP-CGI у нужных сайтов.

И речь пойдёт не о быстрой смене версии php на всём сервере, а именно о том, чтобы, например, все сайты на сервере работали с PHP7, а один или несколько, например с PHP5.

Скачиваем исходники PHP нужной версии, распаковываем и переходим в папку с ними

Собираем нужную версию php

Компилируем php тремя коммандами:

Во время конфигурирования скорее всего будут ошибки. Они по большей части свидетельствуют о отсутствующих пакетах на сервере. Названия недостающих легко гугляться.

Копируем получившийся бинарник

Файл /usr/local/bin/php-cgi надо переименовать и положить по пути /usr/lib/cgi-bin/php5

Настраиваем нужный VirtualHost апача для работы с нашим бинарником

Ну и самое главное — это заставить нужный хост не работать как модуль апача. Скажу честно, на поиск решения я потратил не мало времени.

Эти строчки нужно добавить в нужный VirtualHost

Нюансы и возможные проблемы

  1. Ошибка: Invalid command ‘Action’, perhaps misspelled or defined by a module not included in the server configuration

Не включен модуль апача actions. Включаем:

Файл php.ini будет погдружаться из папки /usr/local/lib/. Изменить это можно опцией —with-config-file-path с выбором при компиляции.

Также должен быть включен конфиг апача serve-cgi-bin

Похожие записи

Сравнение скорости связок Apache + mod-php и Nginx + php-fpm

В декабре того года сменил связку Apache + mod-php (на своём сервере) на связку Nginx + php-fpm, чему несказанно рад. Сайты, даже визуально, стали откликаться быстрее. До и после переезда на примере своего блога замерил скорость генерации страницы, отдачи статики сервером, потребление памяти (php7) и т.д. Под катом немного сравнительных цифр.

PHP. Первый и последний день квартала с помощью класса DateTime

1С-Битрикс. Выключение попытки авторизации на сайте по логину и паролю базовой http-авторизации

Когда на сайте используется базовая http-авторизация, то после ввода верных данных и успешной авторизации битрикс пытается по этим же данным авторизовать вас и на самом сайте. И если учётки в битриксе с такими параметрами нет, то на страницах, где есть вызов компонента формы авторизации будет всегда красоваться сообщение об ошибке «Неверный логин или пароль».

Читайте также  Построить график зависимости силы от времени

Подробности, как убрать надоедливое сообщение — под катом.

19 комментариев

Большое спасибо! очень выручило это решение. Всё отлично работает!

P.S. от себя могу добавить, что пунктик "Копируем получившийся бинарник" я для себя заменил на "делаею симлинк".

Ссылка для wget неправильная. Покатит, например, такой вариант http://ua2.php.net/get/php-5.6.28.tar.gz/from/this/mirror

А у меня установился рядом просто методом apt-get install php5.6 — можно в таком случае его заюзать для отдельных сайтов?

А, гоню. Правильная ссылка.

Ну и, собственно, у меня всё закончилось ошибкой

The requested URL /cgi-bin/php5/phpinfo.php was not found on this server

во что переименовать бинарник?

Респект 🙂 Я чайник из чайников — а всё заработало с первого раза. От души, БЛАГОДАРЮ .

Ну и, собственно, у меня всё закончилось ошибкой The requested URL /cgi-bin/php5/phpinfo.php was not found on this server

значит мод CGI не включен. Попробуйте: a2enmod cgi sevice apache2 restart

Здравствуйте! У меня такая же проблема. Ошибка The requested URL /cgi-bin/php5/phpinfo.php was not found on this server. В гугле ничего не нашел, говорят, что на centos7 apache mod_cgi уже включен. Помогите, пожалуйста.

Тоже ошибка The requested URL /cgi-bin/php5/phpinfo.php was not found on this server. Гугл говорит, что в centos7 mod_cgi уже включен. Помогите разобраться, пожалуйста!

У меня make не выполняется, сделал все по инструкции, Linux Ubuntu 16 Server LTS, 64 бита. Что делать ?

Ошибки при этом какие-то есть?

При вводе команды make, выдает:

Не заданы цели и не найден make-файл. Останов.

Установил до этого VestaCP с php 7, MySQL, Apache и phpMyAdmin (LAMP-сервер)

При это первая команда отрабатывает без ошибок?

Первая команда это ./configure ? Вроде сборка идёт — как проверить, что нормально отработала?

Читайте также  Программа поиска по ключевым словам на компьютере

По-моему, она в конце напишет, всего ли хватает.

Оказывается ошибка была в том, что не был установлен xml2 пакет — нашел на stackoverflow.com:

sudo apt-get install libxml2-dev

После того как скопировал получившийся бинарник в /usr/lib/cgi-bin/php5 — при вводе команды php -v выдает версию 5.6, хотя глобально стоит версия 7.0, т.е. получается версия php затирается версией 5.6 ?

"Файл /usr/local/bin/php-cgi надо переименовать и положить по пути /usr/lib/cgi-bin/php5"

  • надо создать папку php5 или выполнить команду

sudo cp /usr/local/bin/php-cgi /usr/lib/cgi-bin/php5 ? (то есть в /usr/lib/cgi-bin будет лежать файл php5)

Бывают ситуации, когда необходимо для одного или нескольких сайтов на хостинге подключить другую версию PHP. Например, ситуация, когда собрали веб-сервер с PHP-7.x (актуально на момент написания), а у вас есть сайт который может работать максимум с версией PHP 5.х. Яркий пример сайт на Joomla 1.5.

В этой ситуации решение я нашел для себя следующее:

1. Для начала собираем WEB-Server с 2-мя установленными версиями PHP.

2. Ставим вторую версию PHP — PHP-5.6 (на момент написания максимальная версия ветки), ставится с расширением php5.6-cgi.

3. Проверим наличие установленных версий и версию по умолчанию.

4. Проверим наличие скомпилированного фала php5.6 в /usr/lib/cgi-bin/.

5. Запускаем модуль апача для работы с cgi и перезапускаем.

6. Включим конфиг апача serve-cgi-bin

Осталось настроить наши виртуальные хосты для работы с другой версией (не по умолчанию) PHP.

7. В файл /etc/apache2/sites-available/*-default.conf (там находятся все виртуал хосты) добавляем строчки для запуска PHP-5.6 в настройки необходимого хоста, т.е. между

Перезапускаем Apache и все должно работать.

Заметка:

Переключение между версиями по умолчанию
php5.6 -> php7.0

В данной статье рассмотрено создание отдельной версии PHP на аккаунте, что позволяет протестировать или запустить новый сайт без глобальных правок PHP для аккаунта в целом.

Довольно часто могут возникать ситуации, когда необходимо, чтобы PHP-файлы в определенном каталоге обрабатывались интерпретатором PHP с отличной от основной версией. Например, это может потребоваться для тестирования новой версии сайта или в том случае, если на одном аккаунте размещается несколько сайтов, требующих различных настроек PHP.

Читайте также  Производитель oem это кто

Данная статья описывает способ настройки произвольного количества независимых версий PHP для работы в рамках одного аккаунта. Суть метода заключается в использовании собственного CGI-обработчика (враппера). Фактически, будет создан CGI-скрипт, единственной задачей которого будет правильная настройка переменных окружения и запуск интерпретатора PHP нужной версии. Затем при помощи единственной директивы в файле .htaccess веб-сервер будет проинструктирован о том, что все файлы с расширением .php внутри определенного каталога должны обрабатываться этим CGI-скриптом.

Рассмотрим на примере вариант решение данной задачи: пусть требуется для сайта site1.ru настроить обработку скриптов средствами PHP 5.2, в то время, как остальные сайты аккаунта продолжат работу с версией, указанной в панели управления хостингом.

Авторизуйтесь на сервере хостинга, используя реквизиты доступа по SSH. Для установки соединения можно воспользоваться программой PUTTY и инструкциями из статьи SSH-доступ, авторизация по ключу, использование SFTP.

Создайте файл с CGI-скриптом (собственным PHP интерпретатором):

Созданный файл нужно заполнить следующим текстом:

Список установленных на сервере версий PHP можно посмотреть при помощи следующей команды:

Конфигурационный файл php.ini скопируем из каталога с настройками основной версии PHP:

В скопированном файле нам потребуется поправить значение параметра extension_dir — нужно текущее значение заменить на следующее:

здесь имя целевого каталога определяется исходя из номера выбранной версии. Например, для PHP 5.3 целевой каталог с расширениями будет иметь имя php5.3 .

Теперь необходимо сообщить веб-серверу Apache о том, что для обработки PHP-файлов у нас будет использоваться собственный враппер. Создадим файл .htaccess в каталоге с именем сайта site1.ru и запишем в него следующее указание:

И еще один .htaccess создадим в каталоге site1.ru/cgi-bin со следующим текстом:

Проверьте работоспособность выполненной конфигурации. Для этого создадим в каталоге

/site1.ru/www/ файл phpinfo.php со следующим содержимым:

Обратившись к созданному файлу через браузер, убедитесь в том, что Вы используете собственную конфигурацию PHP с версией 5.2. Это означает, что настройки выполнены правильно.

Ссылка на основную публикацию
Adblock
detector