Я пытаюсь запустить базовый пример кода Flysystem для адаптера Local и получаю ошибку Class 'League\Flysystem\Adapter\Local' not found. Это мой процесс:
проверка версии:
php -v
PHP 5.5.9-1ubuntu4.23 (cli) (built: Feb 8 2018 21:59:47)
установить Flysystem:
composer require league/flysystem
вывод показывает, что я в курсе (это мой второй запуск):
Using version ^1.0 for league/flysystem
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating autoload files
теперь в корне сети есть папка vendor. А внутри ./web/vendor/league/flysystem/src/Adapter$ находятся следующие файлы:
AbstractAdapter.php
AbstractFtpAdapter.php
CanOverwriteFiles.php
Ftpd.php
Ftp.php
Local.php
NullAdapter.php
Polyfill/
SynologyFtp.php
... просто показывая, что он, кажется, установлен правильно (?) Я создаю один тестовый файл и один тестовый каталог в моем корневом веб-каталоге:
В fly-local.php я вставляю текст из их документов (https://flysystem.thephpleague.com/docs/adapter/local/):
<?php
use League\Flysystem\Filesystem;
use League\Flysystem\Adapter\Local;
$adapter = new League\Flysystem\Adapter\Local(__DIR__.'/myfiles');
$filesystem = new Filesystem($adapter);
... и измените корневую папку адаптера на myfiles (это правильно?). Потом запускаю:
php fly-local.php
Он выводит:
PHP Fatal error: Class 'League\Flysystem\Adapter\Local' not found in /[PROJECT DIR]/web/fly-local.php on line 6
PHP Stack trace:
PHP 1. {main}() /[PROJECT DIR]/web/fly-local.php:0
Что я делаю неправильно?






Вы использовали композитор, тогда вам нужно включить файл композитора autoload.php.
fly-local.php должен быть:
<?php
require __DIR__.'/vendor/autoload.php';
use League\Flysystem\Filesystem;
use League\Flysystem\Adapter\Local;
$adapter = new League\Flysystem\Adapter\Local(__DIR__.'/myfiles');
$filesystem = new Filesystem($adapter);
Если вы используете фреймворк, вы можете увидеть, что он включает файл автозагрузки php для вас (index.php, в общем). Если ваш тестовый / пользовательский файл не включен в структуру, вам необходимо включить файл вручную.
Спасибо! Я не упоминал об этом, но в конечном итоге пытаюсь вызвать это из модели Codeigniter 2. Поэтому мне пришлось потребовать его как require_once ('./vendor/autoload.php');, который работает.
Вы не включили автозагрузчик композитора.