调用Flysystem,为什么我会得到PHP致命错误:Class' League \ Flysystem \ Adapter \ Local'未找到?

时间:2018-06-05 04:22:06

标签: php codeigniter-2 flysystem

我尝试运行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

现在Web根目录中有一个vendor文件夹。 ./web/vendor/league/flysystem/src/Adapter$内是这些文件:

AbstractAdapter.php
AbstractFtpAdapter.php
CanOverwriteFiles.php
Ftpd.php
Ftp.php
Local.php
NullAdapter.php
Polyfill/
SynologyFtp.php

...只是显示它似乎安装正确(?)我在我的web根目录中创建了一个测试文件和一个测试目录:

  1. 飞local.php
  2. myfiles的/
  3. 进入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 :(得分:1)

您使用了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);

如果您使用框架,您可以看到它包含autoload php文件(一般来说是index.php)。如果您的测试/自定义文件未包含在框架中,则需要手动包含该文件。