Мы запускаем XAMPP с PHP 7.0, потому что для наших новых продуктов требуется PHP 7.
Но есть старые проекты, которые используют такие функции, как mysql_connect
и т. Д. Они удалены в PHP 7.0.
Итак, есть ли способ легко изменить версии PHP в XAMPP?
Примечание : пожалуйста, не предлагайте обновить старый проект до совместимости с новыми версиями, потому что я не в состоянии сделать это из-за тех решений, которые я не могу принять как разработчик (просто сотрудник).
Ответы:
Запустите старую версию PHP только для каталога вашего старого проекта: это будет служить цели большую часть времени, у вас может быть один или два старых проекта, которые вы намереваетесь запустить с более старой версией PHP. Просто настройте xampp для запуска более старой версии PHP только для этих каталогов проекта.
Запустите старую версию PHP на отдельном порту xampp: иногда вы можете обновить старый проект до последней версии PHP, когда вам нужно запустить один и тот же проект на новой и старой версии PHP туда-сюда. Затем вы можете установить более старую версию PHP на другой порт (скажем, 8056), чтобы при
http://localhost/any_project/
переходе на xampp запускался PHP 7, а приhttp://localhost:8056/any_project/
переходе на xampp запускался PHP 5.6.Запустите старую версию PHP на виртуальном хосте: вы можете создать виртуальный хост, такой как localhost56, для запуска PHP 5.6, в то время как вы можете использовать PHP 7 на localhost.
Шаг 1: Скачать PHP
Итак, у вас есть PHP 7, работающий под xampp, вы хотите добавить к нему более старую версию PHP, скажем, PHP 5.6. Загрузите nts (Non Thread Safe) версию PHP zip-архива с php.net (см. Архив для более старых версий) и распакуйте файлы в
c:\xampp\php56
. Потокобезопасная версия не включает php-cgi.exe.Шаг 2. Настройка
php.ini
Откройте
c:\xampp\php56\php.ini
файл в блокноте. Если файл не существует копииphp.ini-development
вphp.ini
и открыть его в блокноте. Затем раскомментируйте следующую строку:Шаг 3: Настройте apache
Откройте панель управления xampp, нажмите кнопку конфигурации для apache и нажмите
Apache (httpd-xampp.conf)
. Откроется текстовый файл, поместите следующие настройки внизу файла:Примечание: Вы можете добавить больше версий PHP к вашей установке xampp, следуя шагам 1-3, если хотите.
Шаг 4 (вариант 1): [Добавить каталоги для запуска определенной версии PHP]
Теперь вы можете установить каталоги, которые будут работать в PHP 5.6. Просто добавьте следующее в нижней части файла конфигурации, чтобы установить каталоги.
Шаг 4 (вариант 2): [Запустить старую версию PHP на отдельном порту]
Теперь, чтобы установить PHP v5.6 на порт 8056, добавьте следующий код в конец файла конфигурации.
Шаг 4 (вариант 3): [Запустить старую версию PHP на виртуальном хосте]
Чтобы создать виртуальный хост (localhost56) в каталоге (htdocs56) для использования PHP v5.6 на http: // localhost56 , создайте каталог htdocs56 в нужном месте и добавьте localhost56 в файл hosts ( см. Как ), а затем добавьте следующий код в конец файла httpd-xampp.conf.
Готово: сохранить и перезапустить Apache
Сохраните и закройте файл конфигурации, перезапустите apache с панели управления xampp. Если вы выбрали вариант 2, вы можете увидеть дополнительный порт (8056), указанный на панели управления xampp.
Если вы столкнулись с вышеуказанной ошибкой, откройте
httpd-xampp.conf
снова и закомментируйте следующую строку с начальным # (хэш-символ).источник
php somefile.php
без каких-либо ошибок?SetEnv PHPRC
поэтому я не могу его закомментировать, но я все еще получаю эту ошибку. :(Error message: End of script output before headers: php-cgi.exe
Вы можете скачать любые версии PHP, которые вам нужны, и поместить их в свои собственные каталоги, например:
c:\php5\
c:\php7\
Все, что вам нужно сделать, это сообщить вашему веб-серверу (Apache), какую версию PHP использовать, что вы делаете, загружая соответствующий модуль. В Apache вы можете сделать это, найдя файл
httpd.conf
и отредактировав соответствующую строку:LoadModule php7_module c:\php7\libphp7.so
Конечно, вам нужно будет найти правильные пути - это только для иллюстрации.
Сохраните
httpd.conf
и перезапустите ваш сервер. Обратите внимание, что если вы не перезапустите его, изменения не вступят в силу.Для этого нет переключателя графического интерфейса, вам нужно отредактировать
.conf
файл и перезапустить Apache. Это займет всего пару секунд, и вы даже можете закомментировать версию, поэтому «переключение» занимает всего пару нажатий клавиш, напримерИспользуйте PHP 5:
Используйте PHP 7:
Вам не нужно несколько версий XAMPP , или двойная загрузка, или использование другой машины, или любого другого «решения», которое предложило запутанные обходные пути. ОП хочет использовать XAMPP и сообщить ему, какую версию PHP использовать. Это самый быстрый и эффективный способ сделать это, и он требует только одной установки XAMPP.
Редактировать 1 ноября 2017: Очевидно, некоторые люди говорят, что в
.so
Windows нет файлов. Ответ, который я дал, был адаптирован из того, как я настроил вещи на моем Mac (который использует.so
файлы вместо.dll
). Принцип ответа, однако, все еще точно верен. Вы используете файл конфигурации Apache,httpd.conf
чтобы указать, где находится модуль PHP (.so
или.dll
) в вашей системе. Таким образом, единственной разницей для Windows будет имя файла и / или местоположение пути. Ответ, который я дал, также верен для ванильной установки Apache / PHP (без XAMPP вообще).источник
Вы можете скачать и установить два разных xampps, как я: (первый - php7, второй - php5)
и если вы не хотите этого делать, я предлагаю вам использовать wamp и менять версии, как показано здесь .
источник
Я бы порекомендовал использовать Docker, это позволяет разделить среду на различные компоненты, а также смешивать и подбирать нужные вам компоненты в любое время.
Docker позволит вам запускать один контейнер с MySQL, другой с PHP. Поскольку они являются отдельными изображениями, у вас может быть два контейнера, один PHP 5, другой PHP 7, вы запускаете тот, который вам нужен, и порт 80 может быть сопоставлен с обоими контейнерами.
https://hub.docker.com имеет широкий спектр предварительно настроенных образов, которые вы можете установить и запустить без особых хлопот.
Я также добавил portainer в качестве образа, который позволяет вам управлять различными аспектами вашей настройки докера - из образа докера (я запустил этот контейнер при запуске, чтобы избавить меня от необходимости использовать командную строку). Он не делает все для вас, и иногда проще настроить и запустить образы в первый раз из командной строки, но после настройки вы можете запускать и останавливать их через веб-интерфейс.
Также возможно запускать оба контейнера одновременно и сопоставлять отдельные порты с каждым. Таким образом, порт 80 может быть сопоставлен с PHP 5, а 81 с PHP 81 (или с PHP 7, если вы смотрите это в 2017 году).
Существуют различные учебные пособия по установке Docker ( https://docs.docker.com/engine/installation/ ) и множество других «как» печатать вещи. Попробуйте http://www.masterzendframework.com/docker-development-environment/ для конфигурации среды разработки.
источник
Я использую Uniserver.
У этого есть встроенная функция.
http://www.uniformserver.com/
Это так просто.
Он даже работает с флешки. Имеет эмуляцию cron, поддержку perl, mariaDB, пару версий Mysql, filezilla server и несколько других вещей.
источник
Вы можете иметь две разные версии XAMPP.
источник
Я работаю над десятилетним проектом на работе. Таким образом, 5.6 - мой по умолчанию. Есть также старые небольшие проекты, которые работают только с 5.2, и я также хочу работать над новыми версиями для моих личных проектов с 7.3.8
Вот что я сделал, чтобы добавить версии 5.2 и 7.3.8 по умолчанию в версии 5.6.
1 - загруженные версии php TS;
v7.3.8 (последняя): https://windows.php.net/download/
v5.2: https://www.apachelounge.com/viewtopic.php?t=7349
2 - Извлечено в папку c: \ xampp \ php738 и c: \ xampp \ php52 по порядку
3 - Добавлены эти строки в конец httpd-xampp.conf (или httpd.conf);
*** ВАЖНОЕ УВЕДОМЛЕНИЕ: Вы не должны использовать псевдоним сценария в качестве имени целевой папки, они должны отличаться. (например, / php7x в порядке, / php7 нет)
PHP 7.3.8 для папки D: \ www \ php7
PHP 5.2 для папки D: \ www \ php52
Некоторые полезные заметки:
И последнее замечание: если вам нужно установить виртуальный хост с любой из версий, вы можете использовать аналогичный подход. Пример laravel vhost conf для php 7.3.8;
Спасибо @Munim Munna за подробный ответ, я хотел бы поделиться надежным образцом с важным примечанием выше.
источник
Если это не абсолютно и определенно XAMPP, вы можете попытаться получить то, что вы хотите, с WAMP. WAMP - это почти одно и то же в другой упаковке.
После установки вы можете просто переключаться между версиями php:
Вы можете установить столько версий PHP, сколько вам нужно.
Вот как это делается подробно.
Просто зайдите сюда: WAMP скачать
Затем выберите ваш базовый сервер, например, последний с php7.
Затем, когда WAMP 3 установлен, перейдите в папку: addons и выберите версию php (или версии), которые вы ищете. Они предлагают разновидности php начиная с php 5.3.29, которые должны работать с mysql_connect.
Чтобы установить аддон, во время установки (дважды щелкните exe-файл) просто укажите папку, в которой установлен WAMP 3.
Затем вы можете использовать содержимое других папок, таких как: приложения и т. Д., Чтобы добавить больше функциональности
Все взаимосвязано, так что вы можете сосредоточиться на кодировании, а не на взломе вашей среды.
источник
Да, ты можешь. Я предполагаю, что у вас уже установлен xampp. Так,
Вот так я работаю с несколькими установленными xampp
источник
Можно установить несколько версий PHP с одной установкой XAMPP. Инструкции ниже работают для Windows.
C:\xampp\php
статьC:\xampp\php-7.1.11
.C:\xampp\php-5.4.45
.Теперь вам нужно отредактировать конфигурацию XAMPP и Apache:
C:\xampp\apache\conf\httpd.conf
, найдите настройки XAMPP для PHP, вы должны изменить его на что-то вроде:Где вы должны комментировать (с
#
) другие версии PHP, так что только однаInclude
будет интерпретироваться в то время.Теперь в
C:\xampp\apache\conf\extra
каталоге переименуйтеhttpd-xampp.conf
вhttpd-xampp.conf.7.1
и добавьте новый файл конфигурации дляhttpd-xampp.conf.5.4.45
. В моем случае я скопировал файл conf другой установки XAMPP для php 5.5, так как синтаксис может немного отличаться для каждой версии.Отредактируйте
httpd-xampp.conf.5.4.45
иhttpd-xampp.conf.7.1
замените там все ссылки наphp
каталог новойphp-X.X
версией. Здесь нужно сделать как минимум 10 изменений для каждого файла.Теперь вам нужно отредактировать php.ini для двух версий. Например , для PHP 7.1, редактировать ,
C:\xampp\php-7.1.11\php.ini
где вы будете заменить путь к директории PHP дляinclude_path
,browscap
,error_log
,extension_dir
..И это все. Теперь вы можете запустить Apache из панели управления XAMPP. А чтобы переключиться с одной версии на другую, вам нужно только отредактировать
C:\xampp\apache\conf\httpd.conf
и изменить включенную версию PHP перед перезапуском Apache.источник
запустите это в командной строке Windows (cmd.exe).
измените его в зависимости от того, куда вы положили установку php 7.
источник
Вам не нужно тратить время на эти конфигурации, просто используйте MAMP :)
MAMP имеет функцию выбора версии PHP на интерфейсе.
источник
Это, вероятно, наименее технический ответ на вопрос, но его также легче всего выполнить.
Если у вас два диска, таких как C: и D:, вы можете установить отдельный экземпляр XAMPP на оба диска с разными версиями php. Это заняло у меня менее 10 минут и является наименее подверженным ошибкам.
Я просто создаю два ярлыка на рабочем столе для обоих xampp-control.exe и называю ярлыки после их версии php. Я надеюсь, что это поможет кому-то вроде меня, который предпочитает очень быстрое и грязное решение.
источник
Следуйте этим простым шагам . В настоящее время я использую XAMPP на PHP 7.2, но для работы над старыми проектами нужен PHP 5.6
ШАГ 1
Загрузите версию PHP Safe Thread на https://windows.php.net/download
Поместите файлы на ваш [диск]: \ xampp \ php5.6
ШАГ 2
Скопируйте [диск]: \ xampp \ apache \ conf \ extra \ httpd-xampp.conf
Переименуйте его в [Drive]: \ xampp \ apache \ conf \ extra \ httpd-xampp5.6.confПереименуйте файл в зависимости от версии Php
ШАГ 3
Отредактируйте только что созданный httpd-xampp5.6.conf
в основном вам нужно изменить весь исходный код PHP и .dll
Перед
После
Вот мой файл: https://gist.github.com/mpalencia/f8a20c31bffb02fe20d371218c23d1ec
ШАГ 4
Отредактируйте файл [диск]: \ xampp \ apache \ conf \ httpd.conf
Перед
После
ШАГ 5
Отредактируйте конфигурацию PHP 5.6 - php.ini
Добавьте ваш каталог расширений: extension_dir = "C: \ xampp \ php5.6 \ ext"
ШАГ 6
Запустите Apache
ШАГ 7
Изменить путь переменной среды PHP в Windows
источник
Может быть, немного поздно, но я использую пакет для переименования папок PHP (слегка измененная версия phpswitch, которую я нашел несколько лет назад).
Вы копируете разные папки в вашу установку XAMPP. Каждая папка PHP (кроме активной) получает номер версии в качестве суффикса (например, php_5.6.32 ). Во ВСЕХ папках PHP создается файл (PHP_VERSION), который содержит только соответствующий номер версии, поэтому скрипт может получить эту информацию. Но это все описано в README.
Начиная с PHP7, httpd-xampp.conf загружает php7ts.dll вместо php5ts.dll . Поэтому мне пришлось расширить скрипт (PHPSwitch.php), чтобы переименовать эти файлы конфигурации, следуя тому же подходу.
источник
Мне нужно было сделать то же самое, поэтому я гуглил, как и пришел к переполнению стека, где у ОП была та же проблема ... Итак, мои выводы ... Я попытался переименовать файлы со всех сторон, и мой вывод был в основном, что меня слишком долго. SOOOO Я закончил просто установить версию 7 отсюда:
https://www.apachefriends.org/index.html (убить службы и выйти из xampp перед попыткой)
Когда спрошено, где поместить имя каталога это как так (дайте ему другое имя):
и
DONEZO! Теперь просто убедитесь, что убили сервисы и выйдите из системы, прежде чем менять местами, и у вас есть 2 стерильных конверта XAMPP для игры в ...
Ура! теперь я действительно могу приступить к работе!
источник
Используйте этот переключатель php
Вы можете контролировать версию php для любого вашего проекта через конфигурацию vhost.
источник
Я знаю, что это старый пост, но я хочу поделиться, есть библиотека для работы mysql_connect () в PHP 7. Она работает путем переопределения реальной функции (mysql_connect () переопределяется mysqli_connect (), которая работает с этой библиотекой).
Я нашел из этого видео https://www.youtube.com/watch?v=Eqd-jJu4sQ4
надеюсь, это поможет
источник