При вызове Flysystem, почему я получаю фатальную ошибку PHP: класс 'League \ Flysystem \ Adapter \ Local' не найден? - PullRequest
0 голосов
/ 05 июня 2018

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

Into 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

Что я делаю не так?

1 Ответ

0 голосов
/ 05 июня 2018

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

...