Permalink
Find file
ba524c2 Jul 24, 2016
executable file 180 lines (93 sloc) 18.7 KB

Установка Апача с PHP

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

Итак, я решил установить Apache и PHP. Что дальше?

Молодец. Устанавливать Apache, PHP, MySQL лучше всего самому, так как при этом ты получишь ценные знания, а сборки лучше не использовать.

Q. Как менять настройки PHP? Например, объем памяти или максимальное время работы скрипта?

Редактируй файл php.ini в папке PHP и перезапусти сервер (если он у тебя есть). Формат этого файла и настройки описаны в мануале, гугли. Если ты накосячишь и неправильно отредактируешь файл, PHP может перестать запускаться.

Q. Что еще за Апач? Зачем он нужен?

Апач — это веб-сервер. Он отвечает на запросы браузера и позволяет тебе открывать PHP-страницы на своем компе, набирая в браузере что-то вроде http://localhost/script.php . То есть ты можешь поднять у себя на компьютере видимый только тебе сайт.

Без Апача ты только можешь запускать скрипты из командной строки (это такое черное окошко с белыми буквами).

Q. Где скачать Апач для Винды? На официальном сайте написано, хрен вам, а не бинарники, компилируйте сами! А если искать в Гугле то предлагают скачать трояны и вирусы.

http://www.apachelounge.com/download/

Q. Какую версию качать? Там их много!

httpd-2.4.10-win32-VC11.zip (или 64-битная версия если у тебя 64-битная ОС) сойдет. На Windows XP Апач 2.4 не запускается, только версия 2.2 и ниже.

Q. Я установил, но он пишет при запуске что ему не хватает какой-то MSVCRT.dll

На сайте apachelounge написано, а ты не прочел, что надо установить дополнительно библиотеку Visual C++ Redistributable for Visual Studio (не саму Visual Studio) с сайта майкрософт. Вернись и найди ссылку.

Q. Где менять настройки Апача?

В файле conf/httpd.conf в папке Апача. Описание этого файла ищи в Гугле. После изменения настроек не забудь перезапустить Апач.

Q. Я редактировал настройки и не уверен, что они правильные. Можно их как-то проверить?

Да, в командной строке набрать

 httpd.exe -t

Если ты не знаком с командной строкой, прочитай мой гайд по ней: https://gist.github.com/codedokode/10539568 (например, тебе может быть придется перед httpd.exe написать путь к нему)

Q. Ок, я установил Апач, как его запускать и останавливать?

Либо через программу Apache Monitor, либо зайти в Панель управления — Службы и найти там Апач, либо Пуск -> services.msc и найти там Апач, либо командой в консоли net start apache2.4 или net stop apache2.4

Q. Я установил Апач, но он не стартует, пишет непонятную фигню. У меня запущен скайп и торренты и пара игрушек, может в этом дело?

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

Q. Я установил Апач, как проверить, что он работает?

Набрать в браузере http://localhost/ и увидеть «It works!». Поле этого найти папку htdocs в папке Апача, отредактировать index.html и убедиться, что текст поменялся.

Q. Что такое localhost ? Что такое 127.0.0.1?

127.0.0.1 (и любой другой IP который начинается с 127) — это IP адрес твоего собственного компьютера (так называемый loopback interface — интерфейс обратной петли (согласен, странный перевод)). То есть при попытке соединиться с этим адресом данные не отправляются в сеть, а соединение обрабатывает программа на твоем компьютере, например, Апач.

localhost — это имя домена, которое соответствует адресу 127.0.0.1 и которое прописано в файле hosts

Q. Что такое файл hosts?

Это файл, в нем можно написать какому IP-адресу соответствует домен, и эта запись будет иметь приоритет перед DNS-сервером (обычно для определения IP по домену используется он).

https://ru.wikipedia.org/wiki/Hosts

Q. Если я переставлю Апач не на порт 80, а на другой порт, как открыть страницу? localhost не работает

Пиши http://localhost:X/ где X — номер порта.

Q. А что это, такое, порт?

Гугли в википедии 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 в папке Апача. Логи надо уметь читать.

Q. А можно выводить ошибки PHP на страницу в браузере?

Ты можешь включить отображение ошибок. Открой файл php.ini, напиши или исправь там display_errors = On и error_reporting = E_ALL и перезапусти веб-сервер. Теперь ошибки должны выводиться на экран. Никогда не делай так на боевых серверах - посетители не должны видеть подробности ошибок.

Q. Если можно выводить ошибки на экран, зачем логи, не понимаю?

Ты дубовая голова. Представь, что у тебя есть сайт. И у кого-то из посетителей во время обработки запроса произойдет ошибка. Ночью, когда ты спишь. Как ты о ней узнаешь? Только прочитав утром логи.

Q. Как посмотреть текущие настройки PHP?

Сделай файл 1.php c содержимым

 <?php phpinfo();

и открой его через браузер.

Q. Ну офигеть, неужели нельзя было сделать простой удобный установщик с кнопкой Далее?

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

Плюс, когда ты правишь текстовый конфиг, ты можешь скопировать кусочек конфига, можешь опубликовать его на форуме, можешь делать поиск по тексту, можешь сохранить конфиг и восстановить из бекапа. А можешь ли ты так же сделать с программой, где настройки делаются галочками и кнопочками? То-то!

Q. Ок, Апач работает, PHP работает. Но меня напрягает, что у меня только один хост — localhost. Я бы хотел иметь несколько сайтов на компе с разными адресами.

Первым делом иди и открой файл hosts (где его искать — ищи в гугле). Что это за файл, написано тут: http://ru.wikipedia.org/wiki/Hosts

Это файл, в котором задается соответствие между именем домена и Ip-адресом. Там допиши что-то вроде:

 127.0.0.1     neko.local

И теперь адресу http://neko.local будет соответствовать твой компьютер. Ок, домен мы создали, теперь надо сделать новый сайт (он называется «virtual host», если ты захочешь гуглить инструкции) в Апаче. Открывай файл httpd.conf из папки Апача и допиши:

<VirtualHost *:80>
    DocumentRoot d:/www/neko.local
    ServerName neko.local  
    ErrorLog logs/neko.log
</VirtualHost>

Заметь, что 80 — номер порта, если у тебя другой порт, впиши другое число. Пути и называния сайта тоже замени на свои. Чтобы проверить, что все работает, положи в папку neko.local какой-нибудь PHP-файл и набери в браузере http://neko.local/file.php

Директива ErrorLog задает файл, в который надо писать информацию о произошедших ошибках.

Q. Что такое DocumentRoot?

Корневая папка сайта

Q. А ничего, что я несколько сайтов в файле hosts вешаю на один и тот же адрес, 127.0.0.1?

Ничего. Браузер при соединении с сервером шлет в заголовках имя сайта, который он хочет открыть, так что проблем не будет.

Q. Так, а MySQL надо ставить?

Надо. У него установщик с кнопочками, так что это не сложно. Скачай MySQL Community Server, и при установке не ставь все подряд, а только MySQL Server (обязательно) и Workbench (по желанию).

Если в процессе установки вылетает ошибка «произошло исключение DateFormat что-то там такое», то пошли лучи проклятия криворуким разработчикам из Oracle и попробуй в настройках Windows временно поменять формат даты на English (US). Или скачай zip-версию и установи руками как описано тут: http://malwselennaiaru.ru/182-ustanovka-mysql-na-windows.html (этот совет был написан в 2014, может он устарел).

Q. У меня тут установлен WAMP, OpenServer и XAMPP. Это же не помешает?

Как сказать. Как раз может помешать. Это сборки, содержащие Apache/PHP/MySQL. Если любая из них запущена, то Апач в ней занимает порт 80 не давая запуститься другим Апачам на том же порту. Также, они могут присутствовать в списке служб и сбивать тебя с толку. Лучшее решение — удалить эти сборки через официальное удаление (не удалением файлов).

Q. Спрошу еще раз. А как запускать/останавливать/перезапускать Апач? Я что-то не вижу кнопок.

Апач — консольная программа, у него нет кнопок. Ты можешь:

  • зайти в командную строку и запустить руками
  • установить Апач как службу (рекомендуется). Инструкция: 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 в командной строке (могут понадобиться права администратора)
  • использовать стороннюю программу с кнопочками, например:

Q. Ты упомянул «перезапустить Апач». Зачем и как это делать?

Если ты поменял настройки в конфиге, Апач сам их не применит. Ты должен его перезапустить, под Windows перезапуск делается остановом службы и повторным запуском.

Q. Как узнать список подключенных в PHP расширений?

Набери команду php -m в консоли. Возможно придется дописать полный путь к php.exe вместо слова «php». А команда php -i выведет подробную информацию о текущих настройках PHP.