Ubuntu — Как переключаться между PHP 5.6 / 7.2 на Cloud9?

Я использую AWS Cloud9 Amazon Web Services, например, Cloud9 IDE. Я пытаюсь выполнить настройку, в которой я могу легко переключать версию PHP веб-интерфейса (не CLI) с PHPBrew между 5.6 и 7 в любое время. На данный момент я добился только того, что bash имеет 5.6.31, внешний интерфейс phpinfo() говорит PHP версии 5.5.9-1ubuntu4.17, который, очевидно, я не хочу видеть. Мне уже удалось сделать это в другом рабочем пространстве, где написано PHP версии 5.6.31, но я боюсь коснуться этого рабочего пространства, чтобы рискнуть попытаться перейти на PHP 7. Я понятия не имею, как мне удалось сделать PHPBrew версия системного уровня PHP…

Я прочитал соответствующие темы и вопросы, но они мне не помогают. Вот как я настроил это сейчас:

curl -L -O https://github.com/phpbrew/phpbrew/raw/master/phpbrew
chmod +x phpbrew
sudo mv phpbrew /usr/local/bin/phpbrew
phpbrew -v
phpbrew init
echo '[[ -e /home/ubuntu/.phpbrew/bashrc ]] && source /home/ubuntu/.phpbrew/bashrc' >> ~/.bashrc

sudo apt-get update
sudo apt-get install apache2-dev
sudo apt-get install libcurl4-gnutls-dev
sudo apt-get install libmcrypt-dev libreadline-dev
sudo phpbrew install php-5.6.31 +default +dbs +mb +iconv +apxs2=/usr/bin/apxs2

Обратите внимание, что я понятия не имею, что я делаю, я никогда не использовал Linux. Я просто собрал эти строки из таких тем, и они выглядели многообещающе, но я, должно быть, что-то упустил.

Дополнительная информация (запрашивается в комментариях):

$ cat /etc/apache2/mods-available/php5.load
LoadModule php5_module        /usr/lib/apache2/modules/libphp5.6.31.so

$ phpbrew list
* php-5.6.31

Я бы в идеале переключился с phpbrew switch после того, как у меня установлены оба 5.6.31 и 7. На данный момент я был бы удовлетворен, если бы я мог просто заставить его работать с 5.6.31

На данный момент я переключил «бегуна» (не уверен, что это) из PHP (встроенный веб-сервер) в Apache httpd (PHP, HTML) Вот: https://i.snag.gy/Y6eNHy.jpg Тогда phpinfo() на самом деле показывал версию phpbrew. Тогда я тоже установлен PHP 7.2.1 но потом все перестало работать. Я получаю много ошибок в консоли C9: https://i.snag.gy/pt5oHN.jpg Красиво, не правда ли? 🙂

Started apache2
/mnt/shared/bin/run-apache2: line 70:  4813 Segmentation fault      apache2

7

Решение

Я полностью угробила phpbrew поскольку это не совсем для переключения PHP Apache, просто CLI (по замыслу). Это никогда не должно было работать, смотрите: это все еще запрос функции.

Начал с чистого рабочего пространства Cloud9 PHP / Apache. Я следил за этой статьей Как установить PHP 5.6, PHP 7.1 на Ubuntu 16.04, 14.04 с использованием PPA и исходя из этого, вот как это оказалось:

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install -y php5.6
sudo apt-get install -y php7.2

Затем проверьте:

php5.6 -v
php7.2 -v

Я столкнулся с ошибка после установки php7.2:

$ php7.2 -v
php7.2: symbol lookup error: php7.2: undefined symbol: pcre_jit_exec

Это я исправил, следуя совету «Обновите вашу библиотеку libpcre3 до версии из хранилища».

Оказывается, это было «сдержано», поэтому я должен был сделать этот:

apt-get install libpcre3 libpcre3-dev

PHP 7.2 начал работать! Удивительно, но оригинальный PHP Cloud9 остался без изменений, который живет под php5 и может быть использован в любое время. Так что теперь я могу жонглировать 3 разными версиями. Да, phpinfo() показывает версию, которую я хочу каждый раз! Перезапуск работника Cloud9 даже не требуется.

mbstring будет отсутствовать на 5.6 (столкнулся с проблемой при запуске phpmyadmin):

sudo apt-get install php5.6-mbstring

Файлы php.ini расположены по адресу:

sudo find . -name 'php.ini'
./php/7.2/apache2/php.ini
./php/7.2/cli/php.ini
./php/5.6/apache2/php.ini
./php/5.6/cli/php.ini
./php5/fpm/php.ini
./php5/apache2/php.ini
./php5/cli/php.ini

Переключиться с чего-либо на 7,2 PHP

sudo a2dismod php5
sudo a2dismod php5.6
sudo a2enmod php7.2
sudo service apache2 restart

С 1 строки:

sudo a2dismod php5 && sudo a2dismod php5.6 && sudo a2enmod php7.2 && sudo service apache2 restart

Переключиться с чего-либо на 5.6 PHP

sudo a2dismod php5
sudo a2dismod php7.2
sudo a2enmod php5.6
sudo service apache2 restart

С 1 строки:

sudo a2dismod php5 && sudo a2dismod php7.2 && sudo a2enmod php5.6 && sudo service apache2 restart

Переключитесь с чего угодно на оригинальный PHP из Cloud9

sudo a2dismod php7.2
sudo a2dismod php5.6
sudo a2enmod php5
sudo service apache2 restart

С 1 строки:

sudo a2dismod php7.2 && sudo a2dismod php5.6 && sudo a2enmod php5 && sudo service apache2 restart

Теперь я очень счастлив.

6

Другие решения

// Обновление версии PHP (с 5.6 до 7.2)

sudo add-apt-repository ppa:ondrej/php -y
sudo apt-get update -y

sudo apt-get install php7.2 php-pear php7.2-curl php7.2-dev php7.2-gd php7.2-mbstring php7.2-zip php7.2-mysql php7.2-xml -y

sudo mv /etc/apache2/envvars /etc/apache2/envvars.bak
sudo apt-get remove libapache2-mod-php5 -y
sudo apt-get install libapache2-mod-php7.2 -y
sudo cp /etc/apache2/envvars.bak /etc/apache2/envvars

sudo a2dismod php5
sudo a2enmod php7.2

sudo service apache2
sudo service apache2 restart
2

Вы можете сделать это через файл .htaccess, добавив следующие строки:

Чтобы перейти на PHP 4.4:

AddHandler application/x-httpd-php4 .php

Чтобы перейти на PHP 5.0:

AddHandler application/x-httpd-php5 .php

Чтобы перейти на PHP 5.1:

AddHandler application/x-httpd-php51 .php

Чтобы перейти на PHP 5.2:

AddHandler application/x-httpd-php52 .php

Чтобы перейти на PHP 5.3:

AddHandler application/x-httpd-php53 .php

Чтобы перейти на PHP 5.4:

AddHandler application/x-httpd-php54 .php

Чтобы перейти на PHP 5.5:

AddHandler application/x-httpd-php55 .php

Чтобы перейти на PHP 5.6:

AddHandler application/x-httpd-php56 .php

Чтобы перейти на PHP 7:

AddHandler application/x-httpd-php7 .php

Чтобы перейти на PHP 7.1:

AddHandler application/x-httpd-php71 .php
1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector