Ниже упоминается такая вещь, как командная строка. Если ты не очень хорошо знаешь что это такое и как в ней работать, прочитай мой гайд по командной строке или любой другой.
Молодец. Устанавливать Apache, PHP, MySQL лучше всего самому, так как при этом ты получишь ценные знания, а сборки лучше не использовать.
Редактируй файл php.ini в папке PHP и перезапусти сервер (если он у тебя есть). Формат этого файла и настройки описаны в мануале, гугли. Если ты накосячишь и неправильно отредактируешь файл, PHP может перестать запускаться.
Если ты используешь сборку вроде OpenServer, то придется погуглить, где именно в этой сборке хранится php.ini и какой из них сейчас используется - их может быть несколько. Если вызвать функцию phpinfo()
в PHP, то она среди прочего укажет путь к используемому файлу конфига php.
Апач — это веб-сервер. Он отвечает на запросы браузера и позволяет тебе открывать PHP-страницы на своем компе, набирая в браузере что-то вроде http://localhost/script.php . То есть ты можешь поднять у себя на компьютере видимый только тебе сайт.
Без Апача ты только можешь запускать скрипты из командной строки (это такое черное окошко с белыми буквами).
Q. Где скачать Апач для Винды? На официальном сайте написано, хрен вам, а не бинарники, компилируйте сами! А если искать в Гугле то предлагают скачать трояны и вирусы.
http://www.apachelounge.com/download/
Надо внимательно посмотреть на имя файла. Например: httpd-2.4.41-win64-VS16.zip
. httpd
- это второе название Апача, 2.4.41
- версия Апача, win64
- значит, только для 64-битной системы (а вот 32-битная версия работает везде), VS16
- версия компилятора, которым собран Апач. Если ты будешь скачивать расширения к Апачу (включая mod_php с сайта PHP), то у них должна быть такая же версия компилятора и такая же разрядность (64-битный Апач не совместим с 32-битными расширениями, и наоборот).
Также (если верить сайту) Апач, собранный с помощью VS16, поддерживает расширения, собранные VC14 и VC15. А на Windows XP Апач 2.4 не запускается, только версия 2.2 и ниже.
На сайте apachelounge написано, а ты не прочел, что надо установить дополнительно библиотеку Visual C++ Redistributable for Visual Studio (не саму Visual Studio) с сайта майкрософт. Вернись и найди ссылку.
В файле conf/httpd.conf в папке Апача. Описание этого файла ищи в Гугле. После изменения настроек не забудь перезапустить Апач.
Да, в командной строке набрать
httpd.exe -t
Если ты не знаком с командной строкой, прочитай мой гайд по ней: https://github.com/codedokode/pasta/blob/master/soft/cli.md (например, тебе может быть придется перед httpd.exe написать путь к нему)
Либо через программу Apache Monitor, либо зайти в Панель управления — Службы и найти там Апач, либо Пуск -> services.msc и найти там Апач, либо командой в консоли net start apache2.4
или net stop apache2.4
Q. Я установил Апач, но он не стартует, пишет непонятную фигню. У меня запущен скайп и торренты и пара игрушек, может в этом дело?
Если у тебя установлен и запущен скайп или торрент или подобная программа, заверши их перед запуском Апача. Суть проблемы: Апач по умолчанию использует порт 80, чтобы слушать запросы от браузера (это специально выделенный для веб-сайтов и http порт). Но скайп, торрент и некоторые другие сетевые программы тоже любят занимать этот порт и Апач не запускается. Надо либо перенести Апач на другой порт в настройках, либо запускать Апач раньше, чем эти зло-программы, либо зайти в их настройки и запретить им занимать порт 80.
Набрать в браузере http://localhost/ и увидеть «It works!». Поле этого найти папку htdocs в папке Апача, отредактировать index.html и убедиться, что текст поменялся.
127.0.0.1 (и любой другой IP который начинается с 127) — это IP адрес, позволяющий отправлять пакеты на твой собственный компьютер (это адрес так называемого loopback interface — «интерфейса обратной петли», что-то вроде виртуальной сетевой карты (согласен, странный перевод)). То есть при попытке соединиться с этим адресом данные не отправляются в сеть, а соединение обрабатывает программа на твоем компьютере, например, Апач.
localhost — это имя домена, которое соответствует адресу 127.0.0.1 и которое прописано в файле hosts
Это файл, в нем можно написать какому IP-адресу соответствует домен, и эта запись будет иметь приоритет перед DNS-сервером (обычно для определения IP по домену используется он).
https://ru.wikipedia.org/wiki/Hosts
Q. Если я переставлю Апач не на порт 80, а на другой порт, как открыть страницу? localhost не работает
Пиши http://localhost:X/ где X — номер порта.
Гугли в википедии TCP-протокол и TCP-порт. Программист должен это знать. Порт - это число, которое указывает, с какой именно программой на компьютере устанавливается соединение.
Q. Ок, Апач и PHP я установил, но Апач не выполняет PHP-файлы, а просто показывает их исходный код. Бу :(
Естественно, Апач же не знает, что у тебя есть PHP и что php-файлы надо выполнять с помощью интерпретатора PHP. Надо подправить кое-что в конфиге Апача, например вот так: http://php.net/manual/ru/install.windows.legacy.index.php#install.windows.legacy.apache2
Все пути естественно надо заменить на правильные.
Если все верно, то ты можешь положить в папку htdocs, например, файл 1.php с кодом <?php phpinfo() ?>
, открыть в браузере http://localhost/1.php и увидеть синюю таблицу.
Q. Когда я открываю браузером php-файл, он не выполняет код, а выводит белую страницу или куски слов
Проверь, что в адресной строке браузера. Если там написано что-то вроде
file://c:/files/file.php
То поздравляю тебя с отсутствием мозгов! Ты открыл файл браузером напрямую с диска, а он не умеет выполнять PHP и воспринимает файл как HTML-файл. Надо выполнять скрипты через веб-сервер, то есть писать в адресной строке что-то вроде http://localhost/file.php
Q. Ок, я все настроил но при попытке открыть php-файл через браузер и веб-сервер я все равно вижу белый экран
Может быть в твоем файле ошибка и он не запускается, а в PHP у тебя выключено отображение ошибок. Читай дальше.
Q. Если при работе с Апач или PHP возникают ошибки и предупреждения, но они не выводятся на экран, где искать их текст?
В логах, естественно. Расположение логов задается настройками Апача, директивами ErrorLog и CustomLog, по умолчанию они указывают в папку logs в папке Апача. Логи надо уметь читать.
Ты можешь включить отображение ошибок. Открой файл php.ini, напиши или исправь там display_errors = On
и error_reporting = E_ALL
и перезапусти веб-сервер. Теперь ошибки должны выводиться на экран. Никогда не делай так на боевых серверах - посетители не должны видеть подробности ошибок.
Ты дубовая голова. Представь, что у тебя есть сайт. И у кого-то из посетителей во время обработки запроса произойдет ошибка. Ночью, когда ты спишь. Как ты о ней узнаешь? Только прочитав утром логи.
Сделай файл 1.php c содержимым
<?php phpinfo();
и открой его через браузер.
Нет, нельзя. Это программы для суровых бородатых программистов, а не блондинок из гламурного журнала. Те, кто использует сборки вместо хардкорной самостоятельной установки, становятся на шаг ближе к блондинкам. Так что иди и удали денвер.
Плюс, когда ты правишь текстовый конфиг, ты можешь скопировать кусочек конфига, можешь опубликовать его на форуме, можешь делать поиск по тексту, можешь сохранить конфиг и восстановить из бекапа. А можешь ли ты так же сделать с программой, где настройки делаются галочками и кнопочками? То-то!
Q. Ок, Апач работает, PHP работает. Но меня напрягает, что у меня только один хост — localhost. Я бы хотел иметь несколько сайтов на компе с разными адресами.
Любое имя хоста, которое заканчивается на .localhost
(например: neko.localhost
), в современных ОС автоматически резолвится (преобразуется) в адрес 127.0.0.1
. Достаточно выбрать такое имя и настроить Апач, чтобы он принимал запросы к этому хосту.
Для этого надо сделать новый сайт (он называется «virtual host», если ты захочешь гуглить инструкции) в Апаче. Открывай файл httpd.conf из папки Апача и допиши:
# Принимать запросы на порт 80 для нашего сайта
<VirtualHost *:80>
# Корневая папка сайта. Слеши должны быть прямые.
DocumentRoot d:/www/neko.localhost
# Имя сайта
ServerName neko.localhost
# В какой файл записывать ошибки
ErrorLog logs/neko.log
</VirtualHost>
Заметь, что 80 — номер порта, если у тебя другой порт, впиши другое число. Пути и называния сайта тоже замени на свои. Чтобы проверить, что все работает, положи в папку neko.localhost какой-нибудь PHP-файл и набери в браузере http://neko.localhost/file.php
Директива ErrorLog задает файл, в который надо писать информацию о произошедших ошибках.
Если ты хочешь имя, не заканчивающееся на .localhost
, то придется еще править файл hosts. Для этого открой файл hosts (где его искать — ищи в гугле). Могут потребоваться права админа. Что это за файл, написано тут: http://ru.wikipedia.org/wiki/Hosts
Это файл, в котором задается соответствие между именем домена и Ip-адресом. Там допиши что-то вроде:
127.0.0.1 neko.local
И теперь адресу http://neko.local будет соответствовать твой компьютер. А дальше надо настроить Апач, как описано выше.
Корневая папка сайта
Ничего. Браузер при соединении с сервером шлет в заголовках имя сайта, который он хочет открыть, так что проблем не будет.
Надо. У него установщик с кнопочками, так что это не сложно. Скачай MySQL Community Server, и при установке не ставь все подряд, а только MySQL Server (обязательно) и Workbench (по желанию).
Если в процессе установки вылетает ошибка «произошло исключение DateFormat что-то там такое», то пошли лучи проклятия криворуким разработчикам из Oracle и попробуй в настройках Windows временно поменять формат даты на English (US). Или скачай zip-версию и установи руками как описано тут: http://malwselennaiaru.ru/182-ustanovka-mysql-na-windows.html (этот совет был написан в 2014, может он устарел).
Как сказать. Как раз может помешать. Это сборки, содержащие Apache/PHP/MySQL. Если любая из них запущена, то Апач в ней занимает порт 80 не давая запуститься другим Апачам на том же порту. Также, они могут присутствовать в списке служб и сбивать тебя с толку. Лучшее решение — удалить эти сборки через официальное удаление (не удалением файлов).
Апач — консольная программа, у него нет кнопок. Ты можешь:
- зайти в командную строку и запустить руками
- установить Апач как службу (рекомендуется). Инструкция: http://httpd.apache.org/docs/2.2/platform/windows.html#winsvc (англ.) Службы — это программы которые выполняются в фоновом режиме в Windows. Службы можно запускать/останавливать, можно ставить в автозагрузку (что удобно). Все это делается через программу управления службами (Пуск -> services.msc либо Пуск -> панель управления -> Администрирование -> Службы). В ней ты находишь службу apacheX.X (вместо X будут цифры) и делаешь с ней что хочешь правой кнопкой мыши.
- если ты установил Апач как службу, ты можешь также использовать команды
net start apacheX.X
иnet stop apacheX.X
в командной строке (могут понадобиться права администратора) - использовать стороннюю программу с кнопочками, например:
- http://www.apache-gui.com/apache-windows.html
- Apache Monitor, входил раньше в состав инсталлятора Апача
Если ты поменял настройки в конфиге, Апач сам их не применит. Ты должен его перезапустить, под Windows перезапуск делается остановкой службы и повторным запуском.
Набери команду php -m
в консоли. Возможно придется дописать полный путь к php.exe вместо слова «php». А команда php -i
выведет подробную информацию о текущих настройках PHP.