← Back

Mac PHP/Yii2 Environment

Установка и настройка окружения на macOS: Homebrew, Apache, PHP, Yii2, MySQL и phpMyAdmin.

1. Установить Homebrew

Установка, обновление и быстрая проверка сервисов.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew update

обновление до последней версии

brew services list

выводит список запущенных служб

brew doctor

доп. проверка состояния brew

2. Добавить `code` в PATH (Visual Studio Code)

Visual Studio Code -> палитра команд -> Shell Command: Install `code` command in PATH.

code --version

проверка, что команда `code` доступна в терминале

3. Apache: установка и базовое управление

Установка Apache, проверка версии и команды запуска/остановки.

brew install httpd

установить apache

httpd -v

проверка установленной версии apache

sudo apachectl start
sudo apachectl stop
sudo apachectl restart

запуск, остановка, перезапуск (вариант через apachectl)

brew services start httpd
brew services stop httpd
brew services restart httpd

предпочтительный вариант через brew services

/opt/homebrew/etc/httpd/httpd.conf
/opt/homebrew/etc/httpd/extra/httpd-vhosts.conf
code /etc/hosts
cd /opt/homebrew/etc/httpd/
open .

основные конфиги и быстрый переход в директорию apache

4. PHP: установка и подключение к Apache

Установка PHP (latest или конкретной версии), загрузка модуля в `httpd.conf`.

brew install php
php -v
which php

установка последней версии + проверка

brew tap shivammathur/php
brew install shivammathur/php/php@7.2
php -v

установка конкретной версии php@7.2 (если нужен старый проект)

/opt/homebrew/etc/httpd/httpd.conf

открываем основной конфиг Apache

LoadModule php7_module /opt/homebrew/opt/php@7.2/lib/httpd/modules/libphp7.so

вставить после блока LoadModule

<IfModule php7_module>
    AddType application/x-httpd-php .php
    DirectoryIndex index.php index.html
</IfModule>

добавить после секции LoadModule

apachectl -t
sudo apachectl restart

проверка синтаксиса конфига и перезапуск

# при необходимости:
# Listen 8080 -> Listen 80
# ServerName www.example.com:8080 -> ServerName localhost

правки, которые помогали при конфликте портов/ServerName

5. Локальный PHP-хост (hosts + VirtualHost + права)

Настройка локального домена и тестового PHP-проекта.

code /etc/hosts
127.0.0.1   localhost envdhost.loc

добавить строку в hosts

/opt/homebrew/etc/httpd/extra/httpd-vhosts.conf

файл виртуальных хостов

<VirtualHost *:80>
    ServerAdmin webmaster@envdhost.loc
    DocumentRoot "/Users/sergeybudyakin/Desktop/my-projects/php"
    ServerName envdhost.loc
    <Directory "/Users/sergeybudyakin/Desktop/my-projects/php">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
    ErrorLog "/opt/homebrew/var/log/httpd/dummy-host.example.com-error_log"
    CustomLog "/opt/homebrew/var/log/httpd/dummy-host.example.com-access_log" common
</VirtualHost>

заменить тестовый VirtualHost на рабочий локальный

sudo apachectl restart
apachectl -t
# тестовый файл:
<?php phpinfo(); ?>

создать `index.php` в `/Users/sergeybudyakin/Desktop/my-projects/php`

cd /opt/homebrew/var/www
open .

если открывается `It works`, проверить содержимое директории `www`

Include /opt/homebrew/etc/httpd/extra/httpd-vhosts.conf

убедиться, что include виртуальных хостов не закомментирован

sudo chmod +x /Users/sergeybudyakin
sudo chmod +x /Users/sergeybudyakin/Desktop
sudo chmod -R 755 /Users/sergeybudyakin/Desktop/my-projects/php

права доступа, если страница не открывается

tail -f /opt/homebrew/var/log/httpd/envdhost.loc-error_log
tail -f /opt/homebrew/var/log/httpd/dummy-host.example.com-error_log

логи ошибок apache для диагностики

6. Yii2 + Composer

Установка Composer, создание Yii2 advanced, конфиг VirtualHost frontend/backend.

curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
composer -v

установка composer и проверка версии

composer create-project yiisoft/yii2-app-advanced envdhost

выполнять в директории, где должен находиться проект

<VirtualHost *:80>
    ServerName envdhost.loc

    AddDefaultCharset UTF-8
    Options FollowSymLinks
    DirectoryIndex index.php index.html
    RewriteEngine on
    RewriteRule /\. - [L,F]

    DocumentRoot /Users/sergeybudyakin/Desktop/my-projects/envdhost/frontend/web
    <Directory /Users/sergeybudyakin/Desktop/my-projects/envdhost/frontend/web>
        AllowOverride none
        <IfVersion < 2.4>
            Order Allow,Deny
            Allow from all
        </IfVersion>
        <IfVersion >= 2.4>
            Require all granted
        </IfVersion>
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^ index.php [L]
    </Directory>

    Alias /stuff /Users/sergeybudyakin/Desktop/my-projects/envdhost/backend/web
    RewriteRule ^/stuff$ /stuff/ [L,PT]
    <Directory /Users/sergeybudyakin/Desktop/my-projects/envdhost/backend/web>
        AllowOverride none
        <IfVersion < 2.4>
            Order Allow,Deny
            Allow from all
        </IfVersion>
        <IfVersion >= 2.4>
            Require all granted
        </IfVersion>
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^ index.php [L]
    </Directory>
</VirtualHost>

готовый VirtualHost: фронт `envdhost.loc`, бэк `envdhost.loc/stuff`

LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

раскомментировать в `httpd.conf`

sudo chmod -R 755 /Users/sergeybudyakin/Desktop/my-projects/envdhost/frontend/web
sudo chmod -R 755 /Users/sergeybudyakin/Desktop/my-projects/envdhost/backend/web

права доступа для web-директорий

composer install
php init
apachectl -t
brew services restart httpd

инициализация проекта и перезапуск apache

7. MySQL

Установка, запуск и базовая начальная настройка.

brew install mysql
mysql --version
brew services start mysql
brew services restart mysql
mysql_secure_installation

установка root-пароля и первичная защита

mysql -u root -p
EXIT;

вход/выход из mysql-cli (`EXIT;` в SQL синтаксисе)

8. phpMyAdmin

Установка, alias в Apache и проверка символической ссылки.

brew install phpmyadmin
Alias /phpmyadmin "/usr/local/var/www/phpmyadmin"

<Directory "/usr/local/var/www/phpmyadmin">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Require all granted
</Directory>

вставить в конец `/opt/homebrew/etc/httpd/httpd.conf`

sudo ln -s /opt/homebrew/opt/phpmyadmin/share/phpmyadmin /opt/homebrew/var/www/phpmyadmin
ls -l /opt/homebrew/var/www/phpmyadmin

создать и проверить символическую ссылку

apachectl -t
brew services restart httpd

9. Финальная проверка

Быстрый чек, что стек поднят и роутинг работает.

http://envdhost.loc/
http://envdhost.loc/stuff
http://localhost/phpmyadmin

фронт, бэк и phpMyAdmin должны открываться

tail -f /opt/homebrew/var/log/httpd/envdhost.loc-error_log

если не открывается — сразу смотреть лог apache

Команда скопирована