Как установить и настроить все необходимые компоненты, чтобы подготовить свой Mac к полноценной разработке на PHP.

Установка Homebrew

Скачивать и устанавливать весь требуемый софт мы будем с помощью пакетного менеджера Homebrew.

Пакетный менеджер — это инструмент, который значительно облегчает процесс установки любых программ. С Homebrew установка программы на компьютер сводится буквально к одной команде в терминале.

Но сам Homebrew тоже требуется установить, так как по умолчанию он не входит в состав операционной системы. Процесс установки занимает некоторое время, так что придётся подождать.

Понятная инструкция по его установке есть на главной странице этой программы.

Все последующие команды выполняются через терминал OS X.

Обратите внимание: после установки brew нужно выполнить две команды из раздела next steps, чтобы добавить Homebrew в PATH. Команды будут зависеть от имени пользователя на компьютере, в нашем случае они такие. Скопируйте их из терминала и выполните по очереди.

Выполните и переходите к следующему шагу.

Установка PHP

Начнём с установки PHP-интерпретатора. Мы используем последнюю версию PHP на момент выхода статьи: PHP 8.

По умолчанию homebrew уже содержит нужный пакет, поэтому остается выполнить лишь команду установки:

brew install php

Проверим, что всё установилось корректно:

php --version

PHP 8.0.11 (cli) (built: Sep 26 2021 20:58:36) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.11, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.11, Copyright (c), by Zend Technologies

Обратите внимание: если вы видите сообщение, что установлена не версия 8, а что-то такое,

WARNING: PHP is not recommended
PHP is included in macOS for compatibility with legacy software.
Future versions of macOS will not include PHP.
PHP 7.3.29-to-be-removed-in-future-macOS (cli) (built: Aug 30 2021 10:56:09) ( NTS )

то перезапустите терминал и попробуйте выполнить php --version ещё раз.

Теперь запустите php-fpm:

brew services start php

Если всё прошло хорошо, то вы увидите такое сообщение:

==> Successfully started `php` (label: homebrew.mxcl.php)

Установка веб-сервера

Веб-сервер обрабатывает запросы пользователей и отдаёт им запрошенные страницы. Без веб-сервера работа с PHP не имеет смысла, так что теперь нужно установить его.

Веб-сервер можно установить с помощью плагинов для редактора или настроить самостоятельно. Рассмотрим оба варианта.

Использование веб-сервера из редактора

Редакторы кода могут самостоятельно запускать сервер. В VS Code это можно сделать через плагин PHP Server, а в PhpStorm через — PHP Debug Server. По ссылкам есть инструкция с настройками.

Для того, чтобы сервер стартовал, нужно чтобы локально был установлен PHP интерпретатор.

Самостоятельная установка веб-сервера через nginx

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

Рассмотрим как установить веб-сервер самостоятельно.

Установим последнюю версию nginx:

brew install nginx

Поскольку порт 80 требует прав администратора, а homebrew по умолчанию устанавливает софт с пользовательскими правами, то работать nginx будет на порту 8080.

Запускаем nginx, чтобы он работал в фоне и обслуживал наши запросы:

brew services start nginx

Индикатор успеха:

==> Successfully started `nginx` (label: homebrew.mxcl.nginx)

Проверяем, что всё установилось корректно, и nginx успешно работает на нашем компьютере. Откройте любой браузер и введите в адресной строке следующий URL:

http://localhost:8080

Вы должны увидеть такую страницу с текстом «Welcome to nginx!».

Интеграция PHP и веб-сервера

На этом шаге мы «подружим» PHP-интерпретатор и nginx, чтобы при запросе веб-страниц с расширением .php автоматически выполнялся php-сценарий и мы видели результат его работы в браузере.

Мы сделаем простую настройку сервера так, чтобы он слушал одну папку проекта и выдавал результат через запрос на страницу.

Откройте конфигурационный файл nginx через VS Code.

Если у вас Mac на процессоре Intel:

code /usr/local/etc/nginx/nginx.conf

Если у вас Mac на процессоре Apple (M1, M1 Pro, M1 Max):

code /opt/homebrew/etc/nginx/nginx.conf

Обратите внимание: если на этом этапе вы получаете ошибку zsh: command not found: code, то откройте VS Code, нажмите Cmd+Shift+P и введите shell.

Выберите пункт Shell Command: Install 'code' command in PATH. После этого команда code добавится в терминал и вы сможете открыть нужный файл.

Добавим в конец документа перед закрывающей скобкой от блока http следующий код.

USERNAME нужно будет в двух местах заменить на ваше имя пользователя.

server {
    listen       8080;
    server_name  localhost;
    client_max_body_size 20M;
    root   /Users/USERNAME/Sites/yeticave;
    location / {
        index  index.php index.html index.htm;
    }
    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        # goes on same line:
        fastcgi_param  SCRIPT_FILENAME /Users/USERNAME/Sites/yeticave/$fastcgi_script_name;
        include        fastcgi_params;
    }
}

Если в nginx.conf уже есть блок server, нужно удалить его, иначе ничего не будет работать.

Здесь мы говорим серверу, чтобы он слушал 8080 порт страницы localhostи при запросе показывал содержимое папки yeticave. После USERNAME вы можете выбрать путь до любой удобной для вас папки.

Разрешим nginx читать содержимое нашего проекта

sudo chmod -R 755 /Users/USERNAME/Sites/yeticave

Поменяйте USERNAME на имя вашего пользователя и yeticave на папку вашего проекта.

Для того, чтобы изменения применились, нужно перезагрузить сервер командой:

brew services restart nginx

Установка xdebug

Установить xdebug можно простой командой:

pecl install xdebug

Проверка работы

Базовая настройка окружения закончена. Осталось проверить, что мы всё сделали правильно.

Создадим тестовый PHP-сценарий со следующим содержимым:

<?php
phpinfo();
?>

Сохраните его по адресу вашего проекта, например, /Users/user/Sites/yeticave в файл index.php. Вновь откройте браузер и перейдите по ссылке http://localhost:8080/index.php. Вы должны увидеть большую страницу с подробной информацией об установленной версии PHP и всех настройках.

Это будет означать, что вы всё сделали правильно, а значит готовы писать и запускать свои первые php-сценарии. Обратите внимание, что все файлы и папки проекта при этой конфигурации должны лежать в корне папки yeticave.

Установка MySQL в macOS

Мы будем работать с MySQL 8. Установить MySQL можно двумя путями: через homebrew, либо с помощью GUI установщика.

Установка через homebrew

Вот как выглядит установка через homebrew:

brew install mysql

Запуск сервера:

brew services start mysql

Индикатор успеха:

==> Successfully started `mysql` (label: homebrew.mxcl.mysql)

MySQL будет установлена без пароля, поэтому для подключения и проверки работы можно выполнить просто

mysql -uroot

Установка через архив с официального сайта

MySQL для macOS можно загрузить с официальной страницы. Для удобства установки рекомендуется загружать DMG Archive. В этом случае процесс установки будет выполняться с помощью стандартного инсталлятора.

Обратите внимание: на момент выхода статьи версия 8.0.26 не работала на Mac c процессорами M1, поэтому мы использовали версию 8.0.25 — она также доступна в архиве на сайте.

Нажимаем «Продолжить», принимаем условия лицензии, выбираем, куда установить MySQL и оказываемся на шаге «Тип установки». На этом шаге необходимо проверить перечень компонентов для установки. Нажимаем кнопку «Настроить». Отмечаем галки MySQL Server, Preference Pane, Launchd Support.

Нажимаем «Установить». Установщик предложит выбрать тип шифрования пароля. Выбирайте первый пункт User Strong Password Encryption, если вы никогда не работали с MySQL и вам не нужно поддерживать очень старые версии клиентов MySQL.

На следующем шаге вам нужно будет ввести пароль для пользователя root. Хороший пароль должен состоять минимум из 8 символов, среди которых должны быть буквы, цифры и специальные символы.

На этом установка MySQL завершена.

Сразу после установки служба MySQL ещё не будет запущена. Запуск необходимо выполнить вручную. Проще всего это сделать через приложение «Системные настройки». Открываем и запускаем аплет для управления MySQL.

В появившемся окне нажимаем кнопку Start MySQL Server.

Теперь всё готово. Хорошей разработки!


«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.

ТелеграмПодкастБесплатные учебники

Читать дальше

Как работает протокол HTTP

Как работает протокол HTTP

HTTP был разработан в 1990-х годах для создания первого интерактивного текстового веб-браузера. За эти годы протокол менялся и совершенствовался, становился более гибким и постепенно превратился в современный интернет. В статье рассмотрим принцип работы протокола и что важно знать о нём разработчику.

Читать дальше
  • 8 февраля 2023
Массивы в PHP

Массивы в PHP

Массив — это ещё один тип данных, вроде числа или строки. Главное отличие массива от остальных типов данных заключается в его способности хранить в переменной больше одного значения. В предыдущих примерах имя переменной всегда ассоциировалось только с одним значением:

  • $name = "Иннокентий"
  • $age = 42

А если мы хотим узнать не только пол, имя и возраст пользователя, но и, допустим, любимые сериалы? Очень непросто назвать один самый любимый сериал, а вот вспомнить несколько — намного легче. Сохранение в переменную-массив нескольких значений выглядит так:

 $fav_shows = ["game of thrones", "american horror story", "walking dead"];

В этом примере мы сохранили в переменной $fav_shows сразу три значения. Но сохранить эти данные — это только половина дела. Как с ними потом работать? Уже знакомый вам способ вывода переменной на экран не будет работать с массивами:

<?php
print("Мои любимые сериалы: " . $fav_shows);

Так увидеть список любимых сериалов не получится. Дело в том, что массив — это не обычная переменная. Массив хранит не простые типы, вроде текста или чисел (их ещё называют «скалярными типами»), а более сложную структуру данных, поэтому здесь нужен особый подход.

Внутри массива у каждого значения есть адрес, по которому к нему можно обратиться. Такой адрес называется индексом. Индекс — это просто порядковый номер значения внутри массива. Индексация начинается с нуля, так что первый элемент получает индекс — 0, второй — 1, и так далее.

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

<?php
print("Мои любимые сериалы: " . $fav_shows[0] . ", " . $fav_shows[1] . ", " . $fav_shows[2]);?>

Теперь можно дать определение массива: Массив — это совокупность множества элементов вида «ключ: значение».

Массивы позволяют перезаписывать существующие значения и добавлять новые. Добавить новое значение в массив можно так:

$fav_shows[] = "the big bang theory";

Новый элемент автоматически получит индекс равный максимальному индексу из существующих + 1. «Теория большого взрыва» сохранится в массиве под индексом 3.

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

$fav_shows[4] = "fargo";

Для полного удаления (без замены на другое) значения по его индексу существует функция unset:

unset($fav_shows[4]);
Читать дальше
  • 10 ноября 2022
Синтаксис PHP

Синтаксис PHP

Разберёмся, из чего состоит любой язык программирования.

У каждого языка есть правила и конструкции, следуя которым мы выражаем мысли и делаем их понятными для другого человека. В программировании всё точно так же. Но вместо человеческого языка мы используем язык программирования PHP, а в роли нашего собеседника выступает PHP-интерпретатор. Поэтому, чтобы выразить свою мысль, мы должны сделать её понятной для интерпретатора.

Читать дальше
  • 27 октября 2022
Массивы $_POST и $_GET в PHP. Обработка форм

Массивы $_POST и $_GET в PHP. Обработка форм

Формы — это часть языка HTML. Формы нужны для передачи данных от клиента на сервер. Чаще всего формы используются для регистрации пользователей, заполнения анкет, оформления заказа в интернет магазине, и так далее.

Через формы можно отправлять как простую текстовую информацию, так и файлы.

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

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

PHP содержит множество средств для работы с формами. Это позволяет очень просто решать типичные задачи, которые часто возникают в веб-программировании:

  • Регистрация и аутентификация пользователя;
  • Отправка комментариев на форумах и социальных сетях;
  • Оформление заказов.

Практически любой современный сайт содержит как минимум несколько разных HTML-форм.

Читать дальше
  • 20 октября 2022
Учебник по PHP

Учебник по PHP

  1. Знакомство с языком
  2. Шаблонизация и подключение файлов
  3. Протокол HTTP и формы
  4. Идентификация пользователя на сайте
  5. Базы данных
  6. Объекты и использование библиотек
  • 10 сентября 2022
Протокол HTTP и работа с заголовками

Протокол HTTP и работа с заголовками

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

  • браузер пользователя (клиент) отправляет на сервер запрос с адресом сайта (URL);
  • сервер получает запрос и отдаёт клиенту запрошенный контент.

Для реализации процесса используется универсальный протокол HTTP.

Читать дальше
  • 10 сентября 2022
Защита от SQL-инъекций

Защита от SQL-инъекций

Внедрение SQL-кода (SQL инъекция) — один из распространённых способов взлома сайтов, работающих с базами данных. Способ основан на внедрении в запрос произвольного SQL-кода. Внедрение SQL позволяет хакеру выполнить произвольный запрос к базе данных (прочитать содержимое любых таблиц, удалить, изменить или добавить данные).

Атака этого типа возможна, когда недостаточно фильтруются входные данные при использовании в SQL-запросах.

Читать дальше
  • 10 сентября 2022
Объекты и классы в PHP

Объекты и классы в PHP

Объекты в PHP — это просто ещё один тип данных. Объект позволяет хранить в переменной набор из свойств и их значений, а также встроенные функции. Это делает объекты похожими по своей структуре на ассоциативные массивы. Но отличие от массивов всё-таки есть, и при этом достаточно важное — объекты могут иметь внутреннее состояние.

Читать дальше
  • 10 сентября 2022