Класс не найден в предложении php 'use' - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь развернуть php api, который использует вашу библиотеку, на сервере Debian.

Я выполнил установку php, composer и library, но я получаю

"Ошибка: класс«Lcobucci \ JWT \ Signer \ Hmac \ Sha256» не найден в /app/app/controllers/AuthController.php », как если бы предложение use не просматривало правильный репозиторий.

Мой проект выглядит следующим образом:

  • / home / $ user / api-v3 / api / www / vendor / lcobucci / jwt
  • / home / $ user / api-v3 / api / www / app/controllers/AuthController.php

При импорте в класс AuthController.php:

use Lcobucci\JWT\Builder;
use Lcobucci\JWT\Signer\Hmac\Sha256;
use Lcobucci\JWT\Parser;
use Lcobucci\JWT\ValidationData;

Нужно ли что-то делать с автозагрузчиком, чтобы он искал ваши классы вПравильный каталог?

У меня есть требование в моем composer.json

    "require": {
        "lcobucci/jwt": "^3.2",
}

Мой autoloader.php

require_once __DIR__ . '/composer/autoload_real.php';

return ComposerAutoloaderInit284b1942c0e74e39634354f520984117::getLoader();

Мой autoloader_real.php

class ComposerAutoloaderInit284b1942c0e74e39634354f520984117
{
    private static $loader;

    public static function loadClassLoader($class)
    {
        if ('Composer\Autoload\ClassLoader' === $class) {
            require __DIR__ . '/ClassLoader.php';
        }
    }

    public static function getLoader()
    {
        if (null !== self::$loader) {
            return self::$loader;
        }

        spl_autoload_register(array('ComposerAutoloaderInit284b1942c0e74e39634354f520984117', 'loadClassLoader'), true, true);
        self::$loader = $loader = new \Composer\Autoload\ClassLoader();
        spl_autoload_unregister(array('ComposerAutoloaderInit284b1942c0e74e39634354f520984117', 'loadClassLoader'));

        $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
        if ($useStaticLoader) {
            require_once __DIR__ . '/autoload_static.php';

            call_user_func(\Composer\Autoload\ComposerStaticInit284b1942c0e74e39634354f520984117::getInitializer($loader));
        } else {
            $map = require __DIR__ . '/autoload_namespaces.php';
            foreach ($map as $namespace => $path) {
                $loader->set($namespace, $path);
            }

            $map = require __DIR__ . '/autoload_psr4.php';
            foreach ($map as $namespace => $path) {
                $loader->setPsr4($namespace, $path);
            }

            $classMap = require __DIR__ . '/autoload_classmap.php';
            if ($classMap) {
                $loader->addClassMap($classMap);
            }
        }

        $loader->register(true);

        if ($useStaticLoader) {
            $includeFiles = Composer\Autoload\ComposerStaticInit284b1942c0e74e39634354f520984117::$files;
        } else {
            $includeFiles = require __DIR__ . '/autoload_files.php';
        }
        foreach ($includeFiles as $fileIdentifier => $file) {
            composerRequire284b1942c0e74e39634354f520984117($fileIdentifier, $file);
        }

        return $loader;
    }
}

function composerRequire284b1942c0e74e39634354f520984117($fileIdentifier, $file)
{
    if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
        require $file;

        $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
    }
}

My autoload_namespaces.php

    <?php

// autoload_namespaces.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
    'Twig_' => array($vendorDir . '/twig/twig/lib'),
    'Pimple' => array($vendorDir . '/pimple/pimple/src'),
    'Doctrine\\DBAL\\' => array($vendorDir . '/doctrine/dbal/lib'),
    'Doctrine\\Common\\Lexer\\' => array($vendorDir . '/doctrine/lexer/lib'),
    'Doctrine\\Common\\Inflector\\' => array($vendorDir . '/doctrine/inflector/lib'),
    'Doctrine\\Common\\Collections\\' => array($vendorDir . '/doctrine/collections/lib'),
);

1 Ответ

0 голосов
/ 23 ноября 2018

Использование require_once __ DIR __.'/../../Vendor/autoload.php';в AuthController работал, но не require_once '/home/$user/api-v3/api/conf/vendor/autoload.php';

...