Вызов Flysystem, почему я получаю фатальную ошибку PHP: Class 'League \ Flysystem \ Adapter \ Local' не найден?

Я пытаюсь запустить базовый пример кода 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

... просто показывая, что он, кажется, установлен правильно (?) Я создаю один тестовый файл и один тестовый каталог в моем корневом веб-каталоге:

  1. fly-local.php
  2. мои файлы/

В 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

Что я делаю неправильно?

Вы не включили автозагрузчик композитора.

shudder 05.06.2018 06:29
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
4
1
5 745
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы использовали композитор, тогда вам нужно включить файл композитора 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');, который работает.

jbobbins 05.06.2018 21:58

Другие вопросы по теме