не удалось изменить версию php на cli [duplicate]

Я хочу, чтобы на моем компьютере Ubuntu были установлены как PHP 5.2.17, так и PHP 5.3.5 и переключались в соответствии с моей необходимостью. Как я могу это достичь?

71
задан 29 April 2017 в 14:01

18 ответов

Вы можете запускать сразу две разные версии PHP, но это не так просто, как просто apt-получение. Вам нужно запустить одну отдельно установленную версию и выполнить ее в соответствии с настройками конфигурации apache.

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

=== с этой страницы ==

Последний шаг состоял в создании виртуальных хостов. В конце у меня есть три файла в / etc / apache2 / sites-enabled: 000-default, php5.3.17 и php5.4.7 Со следующим содержимым

по умолчанию:

<VirtualHost *:80> ServerName localhost DocumentRoot /var/www <Directory "/var/www"> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all AddHandler php-cgi .php Action php-cgi /php-fcgi/php5317.fcgi </Directory> </VirtualHost>

php5.3.17:

<VirtualHost *:80> ServerName 5317.localhost DocumentRoot /var/www <Directory "/var/www"> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all AddHandler php-cgi .php Action php-cgi /php-fcgi/php5317.fcgi </Directory> </VirtualHost>

php5.4.7:

<VirtualHost *:80> ServerName 547.localhost DocumentRoot /var/www <Directory "/var/www"> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all AddHandler php-cgi .php Action php-cgi /php-fcgi/php547.fcgi </Directory> </VirtualHost>

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

(не следует из-за того, что связанный вопрос большой, без принятого ответа. Метод должен (и работает) работать нормально, но пользователь забыл использовать <?php и использовал <? со шорттагами, см. комментарии)

54
ответ дан 18 July 2018 в 11:31

Из этого поста я просто приводил в порядок команды и объяснял по порядку, как мне служили (Ubuntu 12.04)

Этот метод дает вам:

скрипт с меню, который (не оба одновременно) различные версии PHP, установленные на вашем сервере, разделяли файлы conf

Установите все версии, которые вам нужны (у меня два)

Установите зависимости :

sudo apt-get install flex apache2-threaded-dev libxml2-dev apache2 apache2-mpm-prefork apache2-threaded-dev apache2-utils apache2.2-bin apache2.2-common

Сначала установите PHP 5.3. Загрузите php sources

md5sum Downloads/php-5.3.10.tar.bz2 mkdir ~/Sources cd ~Sources/ cp -Rf ../Downloads/php-5.3.10.tar.bz2 . tar xjf php-5.3.10.tar.bz2 cd php-5.3.10/ sudo mkdir /usr/local/php/php_5.3.10

Сначала установите PHP5.6. Загрузите php sources

md5sum Downloads/php-5.6.11.tar.bz2 mkdir ~/Sources cd ~Sources/ cp -Rf ../Downloads/php-5.6.11.tar.bz2 . tar xjf php-5.6.11.tar.bz2 cd php-5.6.11/ sudo mkdir /usr/local/php/php-5.6.11

версии менеджера скриптов PHP: создайте файл с именем php.sh и поместите его в /bin/:

#!/bin/bash opcion=0 cat << CABECERAMENU Opciones del menu 1 => PHP 5.3.10 2 => PHP 5.6.11 CABECERAMENU echo -n "Ingrese su eleccion: " read opcion echo case $opcion in "1") rm /etc/apache2/php.conf ln -s /usr/local/php/php_5.3.10.conf /etc/apache2/php.conf /etc/init.d/apache2 restart ;; "2") rm /etc/apache2/php.conf ln -s /usr/local/php/php_5.6.11.conf /etc/apache2/php.conf /etc/init.d/apache2 restart ;; *) echo "Opcion no valida" ;; esac

Скомпилируйте и установите php 5.3: [ ! d15] cd ~/Sources/php-5.3.10/ sudo ./configure --prefix=/usr/local/php/php_5.3.10 --with-config-file-path=/usr/local/php/php_5.3.10/lib --with-mysql --with-libdir=/lib/x86_64-linux-gnu --with-apxs2=/usr/bin/apxs2 --enable-zip --with-gd --with-curl --with-xmlrpc --with-freetype-dir=/usr/lib/x86_64-linux-gnu --with-jpeg-dir=/usr/lib/x86_64-linux-gnu --with-pdo-mysql --with-pdo-pgsql --enable-soap sudo make clean sudo make sudo ls -lhart /usr/lib/apache2/modules/libphp5.* sudo rm -rf /usr/lib/apache2/modules/libphp5.* sudo make install sudo ls -lhart /usr/lib/apache2/modules/libphp5.* sudo rm -rf /usr/local/php/php-5.3.10/modules/libphp5.so sudo mv /usr/lib/apache2/modules/libphp5.so /usr/local/php/php_5.3.10/modules/ ls -lhart /usr/local/php/php_5.3.10/modules/ sudo a2dismod php5 sudo service apache2 restart

Скомпилировать и установить php 5.6

cd ~/Sources/php-5.6.11 sudo ./configure --prefix=/usr/local/php/php_5.6.11 --with-config-file-path=/usr/local/php/php_5.6.11/lib --with-mysql --with-libdir=/lib/x86_64-linux-gnu --with-apxs2=/usr/bin/apxs2 --enable-zip --with-gd --with-curl --with-xmlrpc --enable-calendar --enable-sockets --with-freetype-dir=/usr/lib/x86_64-linux-gnu --with-jpeg-dir=/usr/lib/x86_64-linux-gnu --with-pdo-mysql --with-pdo-pgsql --enable-soap sudo make clean sudo make sudo ls -lhart /usr/lib/apache2/modules/libphp5.* sudo rm -rf /usr/lib/apache2/modules/libphp5.* sudo make install sudo ls -lhart /usr/lib/apache2/modules/libphp5.* sudo rm -rf /usr/local/php/php_5.6.11/modules/libphp5.so sudo mv /usr/lib/apache2/modules/libphp5.so /usr/local/php/php_5.6.11/modules ls -lhart /usr/local/php/php_5.6.11/modules sudo a2dismod php5 sudo service apache2 restart

Давайте их использовать:

$ sudo php.sh Opciones del menu 1 => PHP 5.3.10 2 => PHP 5.6.11 Ingrese su eleccion: 1 * Restarting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName ... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
3
ответ дан 18 July 2018 в 11:31

Это работает для меня: https://lornajane.net/posts/2016/php-7-0-and-5-6-on-ubuntu

То же, что и скрипт из «Growling Flea ", но с использованием новых версий.

Добавить PPA Пакеты PHP 5.6 и PHP 7.0 относятся к сторонним PPA, которые не предоставляются официальными репозиториями Ubuntu от Canonical. PPA, которые я рекомендую здесь, это Ondřej Surý, который загружает PHP для Debian (который затем используется Ubuntu), поэтому, хотя это не официальный репозиторий, он не совсем случайный! Сам PPA здесь. Чтобы добавить PPA к вашей настройке: sudo add-apt-repository ppa:ondrej/php Затем мы также захотим захватить информацию о том, что предлагается на этом новом PPA, а затем запустите: sudo apt-get update Установите новые версии PHP. У меня уже было несколько из установленных пакетов php5, но я ничего не удалял, я просто хотел, чтобы apt разработал то, что он хотел сделать, когда я попросил его установить новые версии: sudo apt-get install php5.6 php7.0 . Это привело к большому количеству жалоб от apt и много конфликты. Первая предлагаемая резолюция заключалась в том, чтобы удалить все пакеты php5 для акций, чтобы PHP 5.6 мог быть установлен, поэтому я просто принял первое предложение. Я использую apache, поэтому эта настройка дала мне apache с доступными как php5.6, так и php7.0 модулями, и фактически загружен модуль php5.6. Как и сам PHP, все расширения и другие инструменты, которые вы ожидаете с PHP, существуют для обеих версий PHP, поэтому их очень легко добавить в нужные вам модули. Я был очень, очень впечатлен тем, как это хорошо сделано. Настройка и изменение версий Теперь у вас есть две совершенно разные версии PHP, установленные в вашей системе, поэтому давайте посмотрим, куда все куски пошли! Конфигурационные файлы все находятся в /etc/php/5.6 и /etc/php/7.0 соответственно - внутри здесь вы можете настроить, какие расширения загружены, установить параметры ini и все остальное для каждой версии в отдельности. Я пользователь apache, и, как я уже говорил, оба модуля доступны. Поэтому, чтобы переключиться с одного на другой, мне нужно сделать: sudo a2dismod php5.6 sudo a2enmod php7.0 sudo service apache2 restart Для пользователей nginx изменения почти такие же простые, у Digital Ocean есть хорошая документация по этому поводу (у них есть отличные документы!), Поэтому ознакомьтесь с их руководством: https: //www.digitalocean.com/community/tutorials/how-to-upgrade-to-php-7-on-ubuntu-14-04, так как он включает раздел по переконфигурации nginx для использования другой версии PHP. Из командной строки у меня есть как php5.6, так и php7.0, доступные как команды. У меня также есть команда php - посмотрите в / etc / alternatives, чтобы увидеть, что она символически ссылается на определенную версию PHP cli *. Вы также можете быстро проверить, что вы используете, запустив php -v. & AST; более конкретно, запустите php, чтобы посмотреть, какая версия PHP используется, но это, вероятно, укажет на /usr/bin/php, который для меня сам является символической ссылкой на команду /etc/alternatives/php. Работа с расширениями. Этот PPA поставляется с обычным пакетом php-pear, который предлагает команду pecl для обеих версий PHP, поэтому любые расширения, доступные через PECL, могут быть установлены обычным способом. Вам также понадобятся соответствующие заголовки, чтобы установить php5.6-dev или php7.0-dev. Когда установка pecl завершится, вы получите примечание, чтобы добавить * .so-файл к вашему php.ini; на самом деле лучше всего здесь посмотреть, что находится в /etc/php/mods-available. Там уже будут некоторые модули, каждый из которых находится в собственном файле с именем после расширения и заканчивается на .ini. Вы можете скопировать его для использования в качестве шаблона или создать свой собственный и поместить в него всю необходимую конфигурацию для расширения (как минимум, вам нужно extension=[extensionName].so). После того, как новое расширение доступно в доступных моделях, включите и затем проверьте его, выполнив: sudo phpenmod extension php -m . Это создаст символические ссылки в правильных местах для вашей текущей версии PHP для загрузки этого модуля, и вы должны увидеть его в списке модулей выводится на php -m. Pro tip: если вы не видите его на выходе, прокрутите весь путь до вершины вывода и посмотрите, есть ли там полезные сообщения об ошибках.
5
ответ дан 18 July 2018 в 11:31

Вы также можете запускать каждый сайт с разными пользователями. Более безопасный.

Я использовал этот подход один раз.

http://blog.servergrove.com/2011/08/22/how-to-setup-multiple-php- version-on-apache /

Теперь я думаю, что лучше использовать php-fpm ... но это более сложно настроить несколько версий php.

запускать множественные php-fpms и устанавливать apache для использования друг друга.

0
ответ дан 18 July 2018 в 11:31

Я установил php 5.6 и 7.0, но, помимо всех советов, он продолжал работать на 5.6, поэтому эта команда сохраняет день (в моем случае i chosse option 1 и restart apache):

sudo update-alternatives --config php
11
ответ дан 18 July 2018 в 11:31

Если вы хотите запустить их одновременно, вам понадобятся два разных порта. Возможно, вы можете просто изменить конфигурацию apache (httpd.conf) с помощью простого скрипта, который перемещает ту или иную версию в правильную позицию перед запуском apache.

0
ответ дан 18 July 2018 в 11:31

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

Прочитайте мои комментарии и убедитесь, что вы понимаете, что происходит, прежде чем использовать это.

#!/bin/bash # This file is for switching php versions. # To run this file you must use bash, not sh # # OS: Ubuntu 14.04 but should work on any linux # Example: bash phpswitch.sh 7.0 # Written by Daniel Pflieger # growlingflea at g mail dot com NEWVERSION=$1 #this is the git directory target #get the active php enabled mod by getting the array of files and store #it to a variable VAR=$(ls /etc/apache2/mods-enabled/php*) #parse the returned variables and get the version of php that is active. IFS=' ' read -r -a array <<< "$VAR" array[0]=${array[0]#*php} array[0]=${array[0]%.conf} #confirm that the newversion veriable isn't empty.. if it is tell user #current version and exit if [ "$NEWVERSION" = "" ]; then echo current version is ${array[0]}. To change version please use argument exit 1 fi OLDVERSION=${array[0]} #confirm to the user this is what they want to do echo "Update php" ${OLDVERSION} to ${NEWVERSION} #give the user the opportunity to use CTRL-C to exit ot just hit return read x #call a2dismod function: this deactivate the current php version sudo a2dismod php${OLDVERSION} #call the a2enmod version. This enables the new mode sudo a2enmod php${NEWVERSION} echo "Restart service??" read x #restart apache sudo service apache2 restart
0
ответ дан 18 July 2018 в 11:31

Вместо того, чтобы делать несколько VirtualHost, я просто добавляю приведенный ниже код в свой файл .htaccess и, на удивление, он работал,

<FilesMatch \.php$> SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/" </FilesMatch>

Узел: я уже установил php7.2-fpm перед использованием кода .

0
ответ дан 18 July 2018 в 11:31

У меня была такая же проблема, когда я работал с несколькими проектами. Я ссылался на эту статью. Но это было похоже на каждый раз, когда мне нужно переключать версии, если это необходимо, но это дает гибкость для cli и web отдельно.

Перемещение с php5.6 на php7.0

Для Apache мы можем использовать команду как:

sudo a2dismod php5.6 ; sudo a2enmod php7.0 ; sudo service apache2 restart

Для CLI мы можем использовать команду как:

sudo update-alternatives --set php /usr/bin/php7.0

Перемещение с php5.6 to php7.0

Для Apache мы можем использовать команду как:

sudo a2dismod php7.0 ; sudo a2enmod php5.6 ; sudo service apache2 restart

Для CLI мы можем использовать команду как:

sudo update-alternatives --set php /usr/bin/php5.6
0
ответ дан 18 July 2018 в 11:31

Вы можете запускать сразу две разные версии PHP, но это не так просто, как просто apt-получение. Вам нужно запустить одну отдельно установленную версию и выполнить ее в соответствии с настройками конфигурации apache.

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

=== с этой страницы ==

Последний шаг состоял в создании виртуальных хостов. В конце у меня есть три файла в / etc / apache2 / sites-enabled: 000-default, php5.3.17 и php5.4.7 Со следующим содержимым

по умолчанию:

<VirtualHost *:80> ServerName localhost DocumentRoot /var/www <Directory "/var/www"> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all AddHandler php-cgi .php Action php-cgi /php-fcgi/php5317.fcgi </Directory> </VirtualHost>

php5.3.17:

<VirtualHost *:80> ServerName 5317.localhost DocumentRoot /var/www <Directory "/var/www"> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all AddHandler php-cgi .php Action php-cgi /php-fcgi/php5317.fcgi </Directory> </VirtualHost>

php5.4.7:

<VirtualHost *:80> ServerName 547.localhost DocumentRoot /var/www <Directory "/var/www"> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all AddHandler php-cgi .php Action php-cgi /php-fcgi/php547.fcgi </Directory> </VirtualHost>

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

(не следует из-за того, что связанный вопрос большой, без принятого ответа. Метод должен (и работает) работать нормально, но пользователь забыл использовать <?php и использовал <? со шорттагами, см. комментарии)

54
ответ дан 24 July 2018 в 19:48
  • 1
    Спасибо, пожалуйста, укажите инструкции? (onnu vishadheekarikkamo?) – Tachyons 3 February 2013 в 15:14
  • 2
    Хотя это теоретически может ответить на вопрос , было бы предпочтительно включить здесь основные части ответа и предоставить ссылку для справки. – Nanne 3 February 2013 в 17:02
  • 3
    Просто проверьте ссылки, на которых у них действительно хорошая документация на своих сайтах. Вы действительно хотите, чтобы я скопировал вещи с их сайта ?. – aneeshep 3 February 2013 в 18:14
  • 4
    По иронии судьбы, одной из причин, по которым не просто отправлять ссылки, является ссылка, из которой этот пост теперь страдает. – MirroredFate 15 August 2013 в 20:49
  • 5
    @aneeshep, а не копировать их документацию, но соответствующие выдержки и несколько строк о том, что такое «менеджер версий PHP», и как использовать / настроить его для этой конкретной проблемы действительно приветствуется. – Matthieu 23 April 2018 в 07:52

Из этого поста я просто приводил в порядок команды и объяснял по порядку, как мне служили (Ubuntu 12.04)

Этот метод дает вам:

скрипт с меню, который (не оба одновременно) различные версии PHP, установленные на вашем сервере, разделяли файлы conf

Установите все версии, которые вам нужны (у меня два)

Установите зависимости :

sudo apt-get install flex apache2-threaded-dev libxml2-dev apache2 apache2-mpm-prefork apache2-threaded-dev apache2-utils apache2.2-bin apache2.2-common

Сначала установите PHP 5.3. Загрузите php sources

md5sum Downloads/php-5.3.10.tar.bz2 mkdir ~/Sources cd ~Sources/ cp -Rf ../Downloads/php-5.3.10.tar.bz2 . tar xjf php-5.3.10.tar.bz2 cd php-5.3.10/ sudo mkdir /usr/local/php/php_5.3.10

Сначала установите PHP5.6. Загрузите php sources

md5sum Downloads/php-5.6.11.tar.bz2 mkdir ~/Sources cd ~Sources/ cp -Rf ../Downloads/php-5.6.11.tar.bz2 . tar xjf php-5.6.11.tar.bz2 cd php-5.6.11/ sudo mkdir /usr/local/php/php-5.6.11

версии менеджера скриптов PHP: создайте файл с именем php.sh и поместите его в /bin/:

#!/bin/bash opcion=0 cat << CABECERAMENU Opciones del menu 1 => PHP 5.3.10 2 => PHP 5.6.11 CABECERAMENU echo -n "Ingrese su eleccion: " read opcion echo case $opcion in "1") rm /etc/apache2/php.conf ln -s /usr/local/php/php_5.3.10.conf /etc/apache2/php.conf /etc/init.d/apache2 restart ;; "2") rm /etc/apache2/php.conf ln -s /usr/local/php/php_5.6.11.conf /etc/apache2/php.conf /etc/init.d/apache2 restart ;; *) echo "Opcion no valida" ;; esac

Скомпилируйте и установите php 5.3: [ ! d15] cd ~/Sources/php-5.3.10/ sudo ./configure --prefix=/usr/local/php/php_5.3.10 --with-config-file-path=/usr/local/php/php_5.3.10/lib --with-mysql --with-libdir=/lib/x86_64-linux-gnu --with-apxs2=/usr/bin/apxs2 --enable-zip --with-gd --with-curl --with-xmlrpc --with-freetype-dir=/usr/lib/x86_64-linux-gnu --with-jpeg-dir=/usr/lib/x86_64-linux-gnu --with-pdo-mysql --with-pdo-pgsql --enable-soap sudo make clean sudo make sudo ls -lhart /usr/lib/apache2/modules/libphp5.* sudo rm -rf /usr/lib/apache2/modules/libphp5.* sudo make install sudo ls -lhart /usr/lib/apache2/modules/libphp5.* sudo rm -rf /usr/local/php/php-5.3.10/modules/libphp5.so sudo mv /usr/lib/apache2/modules/libphp5.so /usr/local/php/php_5.3.10/modules/ ls -lhart /usr/local/php/php_5.3.10/modules/ sudo a2dismod php5 sudo service apache2 restart

Скомпилировать и установить php 5.6

cd ~/Sources/php-5.6.11 sudo ./configure --prefix=/usr/local/php/php_5.6.11 --with-config-file-path=/usr/local/php/php_5.6.11/lib --with-mysql --with-libdir=/lib/x86_64-linux-gnu --with-apxs2=/usr/bin/apxs2 --enable-zip --with-gd --with-curl --with-xmlrpc --enable-calendar --enable-sockets --with-freetype-dir=/usr/lib/x86_64-linux-gnu --with-jpeg-dir=/usr/lib/x86_64-linux-gnu --with-pdo-mysql --with-pdo-pgsql --enable-soap sudo make clean sudo make sudo ls -lhart /usr/lib/apache2/modules/libphp5.* sudo rm -rf /usr/lib/apache2/modules/libphp5.* sudo make install sudo ls -lhart /usr/lib/apache2/modules/libphp5.* sudo rm -rf /usr/local/php/php_5.6.11/modules/libphp5.so sudo mv /usr/lib/apache2/modules/libphp5.so /usr/local/php/php_5.6.11/modules ls -lhart /usr/local/php/php_5.6.11/modules sudo a2dismod php5 sudo service apache2 restart

Давайте их использовать:

$ sudo php.sh Opciones del menu 1 => PHP 5.3.10 2 => PHP 5.6.11 Ingrese su eleccion: 1 * Restarting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName ... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
3
ответ дан 24 July 2018 в 19:48

Это работает для меня: https://lornajane.net/posts/2016/php-7-0-and-5-6-on-ubuntu

То же, что и скрипт из «Growling Flea ", но с использованием новых версий.

Добавить PPA Пакеты PHP 5.6 и PHP 7.0 относятся к сторонним PPA, которые не предоставляются официальными репозиториями Ubuntu от Canonical. PPA, которые я рекомендую здесь, это Ondřej Surý, который загружает PHP для Debian (который затем используется Ubuntu), поэтому, хотя это не официальный репозиторий, он не совсем случайный! Сам PPA здесь. Чтобы добавить PPA к вашей настройке: sudo add-apt-repository ppa:ondrej/php Затем мы также захотим захватить информацию о том, что предлагается на этом новом PPA, а затем запустите: sudo apt-get update Установите новые версии PHP. У меня уже было несколько из установленных пакетов php5, но я ничего не удалял, я просто хотел, чтобы apt разработал то, что он хотел сделать, когда я попросил его установить новые версии: sudo apt-get install php5.6 php7.0 . Это привело к большому количеству жалоб от apt и много конфликты. Первая предлагаемая резолюция заключалась в том, чтобы удалить все пакеты php5 для акций, чтобы PHP 5.6 мог быть установлен, поэтому я просто принял первое предложение. Я использую apache, поэтому эта настройка дала мне apache с доступными как php5.6, так и php7.0 модулями, и фактически загружен модуль php5.6. Как и сам PHP, все расширения и другие инструменты, которые вы ожидаете с PHP, существуют для обеих версий PHP, поэтому их очень легко добавить в нужные вам модули. Я был очень, очень впечатлен тем, как это хорошо сделано. Настройка и изменение версий Теперь у вас есть две совершенно разные версии PHP, установленные в вашей системе, поэтому давайте посмотрим, куда все куски пошли! Конфигурационные файлы все находятся в /etc/php/5.6 и /etc/php/7.0 соответственно - внутри здесь вы можете настроить, какие расширения загружены, установить параметры ini и все остальное для каждой версии в отдельности. Я пользователь apache, и, как я уже говорил, оба модуля доступны. Поэтому, чтобы переключиться с одного на другой, мне нужно сделать: sudo a2dismod php5.6 sudo a2enmod php7.0 sudo service apache2 restart Для пользователей nginx изменения почти такие же простые, у Digital Ocean есть хорошая документация по этому поводу (у них есть отличные документы!), Поэтому ознакомьтесь с их руководством: https: //www.digitalocean.com/community/tutorials/how-to-upgrade-to-php-7-on-ubuntu-14-04, так как он включает раздел по переконфигурации nginx для использования другой версии PHP. Из командной строки у меня есть как php5.6, так и php7.0, доступные как команды. У меня также есть команда php - посмотрите в / etc / alternatives, чтобы увидеть, что она символически ссылается на определенную версию PHP cli *. Вы также можете быстро проверить, что вы используете, запустив php -v. & AST; более конкретно, запустите php, чтобы посмотреть, какая версия PHP используется, но это, вероятно, укажет на /usr/bin/php, который для меня сам является символической ссылкой на команду /etc/alternatives/php. Работа с расширениями. Этот PPA поставляется с обычным пакетом php-pear, который предлагает команду pecl для обеих версий PHP, поэтому любые расширения, доступные через PECL, могут быть установлены обычным способом. Вам также понадобятся соответствующие заголовки, чтобы установить php5.6-dev или php7.0-dev. Когда установка pecl завершится, вы получите примечание, чтобы добавить * .so-файл к вашему php.ini; на самом деле лучше всего здесь посмотреть, что находится в /etc/php/mods-available. Там уже будут некоторые модули, каждый из которых находится в собственном файле с именем после расширения и заканчивается на .ini. Вы можете скопировать его для использования в качестве шаблона или создать свой собственный и поместить в него всю необходимую конфигурацию для расширения (как минимум, вам нужно extension=[extensionName].so). После того, как новое расширение доступно в доступных моделях, включите и затем проверьте его, выполнив: sudo phpenmod extension php -m . Это создаст символические ссылки в правильных местах для вашей текущей версии PHP для загрузки этого модуля, и вы должны увидеть его в списке модулей выводится на php -m. Pro tip: если вы не видите его на выходе, прокрутите весь путь до вершины вывода и посмотрите, есть ли там полезные сообщения об ошибках.
5
ответ дан 24 July 2018 в 19:48

Вы также можете запускать каждый сайт с разными пользователями. Более безопасный.

Я использовал этот подход один раз.

http://blog.servergrove.com/2011/08/22/how-to-setup-multiple-php- version-on-apache /

Теперь я думаю, что лучше использовать php-fpm ... но это более сложно настроить несколько версий php.

запускать множественные php-fpms и устанавливать apache для использования друг друга.

0
ответ дан 24 July 2018 в 19:48
  • 1
    нет готового сценария для компиляции этих нескольких экземпляров параллельных php? Просто сделать это вручную и исправить пути? SO это означает, что все хостинговые компании разрабатывают собственные сценарии для запуска этой параллельной версии и никогда не делятся своими усилиями. – lenzai 25 May 2012 в 17:56
  • 2
    Один экземпляр apache может запускать сразу 2 версии php. – Nanne 1 February 2013 в 16:46
  • 3
    Добро пожаловать в Ask Ubuntu! Хотя это теоретически может ответить на вопрос , было бы предпочтительно включить здесь основные части ответа и предоставить ссылку для справки. – user98085 3 February 2013 в 05:40
  • 4
    У меня не хватило времени, чтобы сделать, как вы сказали. Наверное, я только хотел показать дорогу. Stil нужно научиться использовать материал для форматирования. Спасибо, в любом случае! – Henrique Fernandes 14 February 2013 в 21:24

Я установил php 5.6 и 7.0, но, помимо всех советов, он продолжал работать на 5.6, поэтому эта команда сохраняет день (в моем случае i chosse option 1 и restart apache):

sudo update-alternatives --config php
11
ответ дан 24 July 2018 в 19:48

Если вы хотите запустить их одновременно, вам понадобятся два разных порта. Возможно, вы можете просто изменить конфигурацию apache (httpd.conf) с помощью простого скрипта, который перемещает ту или иную версию в правильную позицию перед запуском apache.

0
ответ дан 24 July 2018 в 19:48
  • 1
    У меня уже установлен PHP 5.3.5. Как установить PHP 5.2.17? Не могли бы вы рассказать мне, где и что я должен изменить, чтобы переключаться между этими двумя версиями? Файл httpd.conf пуст в моей установке. – Debiprasad 24 June 2011 в 17:18

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

Прочитайте мои комментарии и убедитесь, что вы понимаете, что происходит, прежде чем использовать это.

#!/bin/bash # This file is for switching php versions. # To run this file you must use bash, not sh # # OS: Ubuntu 14.04 but should work on any linux # Example: bash phpswitch.sh 7.0 # Written by Daniel Pflieger # growlingflea at g mail dot com NEWVERSION=$1 #this is the git directory target #get the active php enabled mod by getting the array of files and store #it to a variable VAR=$(ls /etc/apache2/mods-enabled/php*) #parse the returned variables and get the version of php that is active. IFS=' ' read -r -a array <<< "$VAR" array[0]=${array[0]#*php} array[0]=${array[0]%.conf} #confirm that the newversion veriable isn't empty.. if it is tell user #current version and exit if [ "$NEWVERSION" = "" ]; then echo current version is ${array[0]}. To change version please use argument exit 1 fi OLDVERSION=${array[0]} #confirm to the user this is what they want to do echo "Update php" ${OLDVERSION} to ${NEWVERSION} #give the user the opportunity to use CTRL-C to exit ot just hit return read x #call a2dismod function: this deactivate the current php version sudo a2dismod php${OLDVERSION} #call the a2enmod version. This enables the new mode sudo a2enmod php${NEWVERSION} echo "Restart service??" read x #restart apache sudo service apache2 restart
0
ответ дан 24 July 2018 в 19:48

Вместо того, чтобы делать несколько VirtualHost, я просто добавляю приведенный ниже код в свой файл .htaccess и, на удивление, он работал,

<FilesMatch \.php$> SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/" </FilesMatch>

Узел: я уже установил php7.2-fpm перед использованием кода .

0
ответ дан 24 July 2018 в 19:48

У меня была такая же проблема, когда я работал с несколькими проектами. Я ссылался на эту статью. Но это было похоже на каждый раз, когда мне нужно переключать версии, если это необходимо, но это дает гибкость для cli и web отдельно.

Перемещение с php5.6 на php7.0

Для Apache мы можем использовать команду как:

sudo a2dismod php5.6 ; sudo a2enmod php7.0 ; sudo service apache2 restart

Для CLI мы можем использовать команду как:

sudo update-alternatives --set php /usr/bin/php7.0

Перемещение с php5.6 to php7.0

Для Apache мы можем использовать команду как:

sudo a2dismod php7.0 ; sudo a2enmod php5.6 ; sudo service apache2 restart

Для CLI мы можем использовать команду как:

sudo update-alternatives --set php /usr/bin/php5.6
0
ответ дан 24 July 2018 в 19:48
  • 1
    Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. - Из обзора – waltinator 29 May 2018 в 01:29
  • 2
    @waltinator Спасибо за обзор, обязательно позаботимся об этом – Shivdhwaj Pandey 29 May 2018 в 08:13

Другие вопросы по тегам:

Похожие вопросы: