XAMPP или чем заменить Denwer
К сожалению, пакет Denwer для web-разработки давно не обновляется и последняя доступная в комплекте версия PHP - это 5.3.0, а сегодня актуальна как минимум 5.4, а ещё лучше 7.3.X (на момент написания заметки).
Конечно, можно над Денвером поиздеваться и "воткнуть" туда PHP поновее, но в целом назрел момент для перехода на более новый пакет, регулярно обновляющийся, с удобной Control Panel, поддержкой Windows 10, PHP7, HTTPS и т.д. Всё это - XAMPP, установить который предельно просто.
Переходим на страницу пакета, скачиваем его для своей ОС (для Windows - около 150 Мб), запускаем скачанный установщик, если нужно, разрешив его выполнение.
Если Вам не нужны "лишние" языки и технологии, а только обычный набор для PHP+MySQLi разработки, оставляем только те компоненты, что на рисунке:
что выбрать при установке XAMPP
Путь к пакету оставляем C:\xampp
, в остальном только нажимаем кнопку Next.
Когда всё готово, запускаем из папки приложения файл xampp-control.exe
(а ещё лучше создать для этого файла ярлык на рабочем столе), видим удобную контрольную панель, в которой можно подключать, отключать или настраивать компоненты:
Панель xampp-control, запущены Apache и MySQLi
Нажав кнопку "Config", можно заставить PHP и MySQLi запускаться автоматически вместе со стартом пакета, а саму панель - сразу сворачиваться в System Tray, чтобы нам не нажимать каждый раз лишние две-три кнопки.
Папкой для наших скриптов будет c:\xampp\htdocs\
, то есть, если мы разместим в этой папке, например, файл с именем 1.php
, в браузере он будет доступен по URL-адресу http://localhost/1.php
Утилита для администрирования баз данных (стандартная phpMyAdmin) доступна по ссылке http://localhost/phpmyadmin
В остальном всё работает, как в Denwer (см. по первой ссылке), только лучше.
Проверил на вот этой несложной "гостевой книге" на PHP5+MySQLi, поменять для PHP 7 пришлось одну вот эту строчку.
Не забывайте писать код в правильном редакторе и в правильной кодировке.
XAMPP и сайт в кодировке Windows-1251
Кроме правильной кодировки в самой базе, нужно указать в файле .htaccess
сайта все три директивы:
DefaultLanguage ru AddDefaultCharset windows-1251 php_value default_charset cp1251
Кроме того, я в таких случаях из кода тоже посылал запрос после коннекта с базой.
SET CHARACTER SET 'cp1251'
Всю новую разработку нужно вести в кодировке Юникода utf-8.
Известные проблемы с установкой XAMPP
XAMPP v.3.2.4 с PHP 7.4.2 по крайней мере, под Windows 7 выдаёт после установки модальное окно с сообщением "libsqlite.dll missing on start".
При этом сервисы Apache и MySQLi всё равно работают. Решение - скопировать файл
libsqlite.dll
из папкиC:\xampp\php\
в папкуC:\xampp\apache\bin\
(если ставили в размещение по умолчаниюC:\xampp
).XAMPP с PHP 7.4.2 или близкими версиями: иногда перестаёт стартовать Apache после запуска, выдавая сообщение вроде
[pid 7804:tid 632] AH00020: Configuration Failed, exiting
.Если это не конфликт по 80 порту, возможно, PHP 7.4.x просто требует установки пакета Microsoft Visual C++ Redistributable for Visual Studio 2019, который можно загрузить по адресу: https://visualstudio.microsoft.com/ru/downloads/.
Открываем внизу список "Другие инструменты и платформы", там видим "Распространяемый компонент Microsoft Visual C++ для Visual Studio 2019". Ставим для своей платформы, например, для x64.
Наличие Visual Studio 2019 проблему само по себе не решает.
При попытке сохранить настройки контрольной панели выводится "cannot create file \xampp\xampp-conntrol.ini отказано в доступе"
Установите ярлыку XAMPP свойство "Запускать от имени администратора".
Xampp завершается с ошибкой вида xampp eaccessviolation 0025b2p2 и ругается на невозможность сохранить файл
xampp-control.ini
.Примерно то же, что предыдущее, проблема вновь всплыла в новых сборках XAMPP с PHP 8.1.X под Windows 10.
До запуска Xampp перейдите к файлу
\xampp\xampp-control.exe
, нажмите на нём правой кнопкой, выберите Свойства, затем вкладку Совместимость, установите флажок Запускать это программу от имени администратора и нажмите "Применить"
Обновление XAMPP
Для переинсталляции XAMPP:
1) при необходимости снимите через диспетчер задач процессы Apache HTTP Server и mysqld, если они не завершились сами после работы XAMPP;
2) сохраните в удобном месте содержимое своих скриптов из папки \xampp\htdocs
и, возможно, свои базы данных из папки mysql\data
(базы лучше импортировать через утилиту http://localhost/phpmyadmin/
!);
3) удалите всё содержимое папки c:\XAMPP
или d:\XAMPP
(а лучше переименуйте папку, например, в xampp.old
, после стабильной работы новой версии папку можно будет удалить), скачайте и установите новую версию;
4) верните на место сохранённые на шаге 2) данные.
О "внезапно сдыхающем" MySQL в XAMPP
Бывает и такое. Сервис MySQL перестаёт стартовать, а в контрольной панели только
[mysql] Error: MySQL shutdown unexpectedly.
Если не удаётся установить, какое изменение привело к проблеме, решается она из бэкапа:
1. Переимновать папку /xampp/mysql/data в /xampp/mysql/data_old
2. Создаём новую /xampp/mysql/data и копируем туда всё с вложенными папками из /xampp/mysql/backup
3. Все папки, названия которых соответствуют названиям ваших баз данных, копируем из /xampp/mysql/data_old в /xampp/mysql/data , кроме папок mysql, performance_schema, phpmyadmin
4. Копируем файл /xampp/mysql/data_old/ibdata1 в папку /xampp/mysql/data
5. Запускаем MySQL из контрольной панели, если видим много сообщений типа phpmyadmin #1932 - Table 'phpmyadmin.pma__table_uiprefs' doesn't exist in engine жмём кнопку сброса сеанса:
кнопка сброса сеанса
25.03.2019, 16:21 [6839 просмотров]