Содержание
Речь в заметке пойдёт о модуле PHP7, покдлюченном как модуль апача на всём сервере, и PHP5.6, подключенном как PHP-CGI у нужных сайтов.
И речь пойдёт не о быстрой смене версии php на всём сервере, а именно о том, чтобы, например, все сайты на сервере работали с PHP7, а один или несколько, например с PHP5.
Скачиваем исходники PHP нужной версии, распаковываем и переходим в папку с ними
Собираем нужную версию php
Компилируем php тремя коммандами:
Во время конфигурирования скорее всего будут ошибки. Они по большей части свидетельствуют о отсутствующих пакетах на сервере. Названия недостающих легко гугляться.
Копируем получившийся бинарник
Файл /usr/local/bin/php-cgi надо переименовать и положить по пути /usr/lib/cgi-bin/php5
Настраиваем нужный VirtualHost апача для работы с нашим бинарником
Ну и самое главное — это заставить нужный хост не работать как модуль апача. Скажу честно, на поиск решения я потратил не мало времени.
Эти строчки нужно добавить в нужный VirtualHost
Нюансы и возможные проблемы
- Ошибка: 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.
Данная статья описывает способ настройки произвольного количества независимых версий 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. Это означает, что настройки выполнены правильно.