Этот способ решает задачу установки PHP-библиотек через Composer на обычном виртуальном хостинге, где нет SSH и нельзя выполнить команды в консоли.
Подход подходит, если проект можно собрать локально и потом просто загрузить на хостинг готовые зависимости. Не подходит, если пакет требует серверной сборки, нестандартных расширений PHP на хостинге, запуска post-install скриптов на сервере или тесно завязан на окружение хостинга.
1. Готовое решение
Идея простая: все действия Composer выполняются локально на твоём ПК или на тестовой машине, а на хостинг загружается уже готовый результат.
Если библиотека ещё не добавлена в проект, сначала подключи её локально:
composer require monolog/monolog
После этого собери проект для загрузки на хостинг:
composer install --no-dev --prefer-dist -o
Что означает эта команда:
composer install— устанавливает зависимости проекта--no-dev— не ставит пакеты для разработки--prefer-dist— предпочитает готовые архивы пакетов-o— оптимизирует autoload для production
Что потом загружать на хостинг:
vendor/composer.jsoncomposer.lock- код проекта, который использует зависимости
Если проект уже использует автозагрузчик Composer, в PHP обычно достаточно такого подключения:
declare(strict_types=1); require_once __DIR__ . '/vendor/autoload.php'; echo 'Composer autoload loaded';
2. Как использовать пошагово
- Установи Composer локально на свой ПК.
- Открой папку проекта, где лежит
composer.json. - Если библиотека ещё не добавлена — выполни
composer require vendor/package. - Собери проект командой
composer install --no-dev --prefer-dist -o. - Проверь, что появилась папка
vendorи файлcomposer.lock. - Загрузи проект на хостинг через FTP/SFTP.
- Убедись, что пути в проекте указывают на
vendor/autoload.php. - Открой сайт или тестовый файл проверки.
Если библиотека добавляется в уже существующий проект, то после очередного composer require vendor/package локально нужно заново загрузить обновлённые vendor, composer.json и composer.lock.
3. Пример проверки на хостинге
Создай временный файл composer-check.php в корне сайта:
declare(strict_types=1);
ini_set('display_errors', '1');
error_reporting(E_ALL);
require_once __DIR__ . '/vendor/autoload.php';
echo 'OK: vendor loaded';
Если при открытии файла в браузере видишь OK: vendor loaded, значит зависимости подключаются корректно. После проверки файл лучше удалить.
Комментарии
0Нашли ошибку или хотите дополнить материал?