Одночасна робота кількох версій PHP на сервері Debian

Мова в замітці піде про модуль 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 не входить до сервера налаштування

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

Файл php.ini буде подружитися з папки /usr/local/lib/. Змінити це можна опцією --with-config-file-path з вибором компіляції.

Також має бути включений конфіг апача serve-cgi-bin

Схожі записи

PHP. Перший і останній день кварталу за допомогою \DateTime класу

Порівняння швидкості зв'язок Apache + mod-php та Nginx + php-fpm

Оновлення Ubuntu Server 12.04 до 13.10

Вчораоновив програмне забезпечення на своєму сервері. При оновленні вилізли деякі помилки про які і хочу розповісти.

Велике дякую! дуже врятувало це рішення. Все чудово працює!

P.S. від себе можу додати, що пунктик "Копіюємо бінарник, що вийшов" я для себе замінив на "роблю сімлінк".

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

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

Ну і, власне, у мене все скінчилося помилкою

Requested URL

на що перейменувати бінарник?

Респект :) Я чайник із чайників - а все запрацювало з першого разу. Від душі, ДЯКУЮ .

Ну і, власне, у мене все закінчилося помилкою The requested URL

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

Вітаю! У мене така ж проблема. Помилка The requested URL /cgi-bin/php5/phpinfo.php був невідомий на цьому сервері. У гугле нічого не знайшов, кажуть, що на centos7 apache mod_cgi вже включено. Допоможіть будь ласка.

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

У мене не виконується, зробив все за інструкцією, 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)