Простой сайт объявлений для помощи собакам.
- PHP 8.5
- MySQL
- RedBeanPHP
- HTML5
- CSS
- Vanilla JS
public_html/— публичная часть сайта.app/— код приложения.bootstrap/— загрузка приложения.config/— конфиги.database/— миграции.resources/— шаблоны.storage/— логи, кэш, временные файлы.
Публичная часть:
/home/w/wm48mav4/wm48mav4.beget.tech/public_html
Закрытая часть:
/home/w/wm48mav4/wm48mav4.beget.tech/help-team-site
Миграции лежат в database/migrations/ и запускаются через простой CLI-мигратор:
php database/migrate.phpМигратор создает таблицу migrations и не применяет повторно уже выполненные файлы.
Для подключения к базе нужен .env в корне закрытой части проекта. Реальные пароли не хранятся в Git, поэтому сначала скопируйте пример и заполните значения:
cp .env.example .envНужные переменные:
DB_HOST=localhost
DB_PORT=3306
DB_NAME=help_team
DB_USER=help_team
DB_PASS=
DB_CHARSET=utf8mb4
YANDEX_MAPS_API_KEY=
YANDEX_GEOCODER_API_KEY=Локально:
php database/migrate.phpНа Beget запускать из закрытой части проекта:
cd /home/w/wm48mav4/wm48mav4.beget.tech/help-team-site
/usr/local/bin/php8.5 database/migrate.phpНа странице подачи объявления карта подключается только при наличии ключа:
YANDEX_MAPS_API_KEY=Обратное геокодирование выполняется серверным endpoint POST /api/geocode/reverse.
Ключ геокодера хранится только в .env и не передается во frontend:
YANDEX_GEOCODER_API_KEY=Если YANDEX_MAPS_API_KEY не указан, форма работает без карты: город и адрес можно заполнить вручную.
Форма /submit принимает поле media[] с несколькими файлами.
Разрешены:
image/jpegimage/pngimage/webpvideo/mp4video/webmvideo/quicktime
Ограничения:
- максимум 10 файлов
- изображение до 8 МБ
- видео до 50 МБ
- максимум 1 видео
- SVG запрещен
- MIME проверяется на сервере через PHP
finfo_file
Файлы сохраняются в публичной части:
public_html/uploads/ads/YYYY/MM/{ad_id}/filename.ext
В базе хранится относительный путь:
/uploads/ads/2026/06/123/file.webp
После добавления или обновления таблиц нужно запускать миграции:
php database/migrate.php