【问题标题】:Class not found on 'use' php clause在'use' php 子句中找不到类
【发布时间】:2019-04-26 03:38:21
【问题描述】:

我正在尝试在 Debian 服务器上部署一个使用您的库的 php api。

我安装了 php、composer 和库,但我得到了一个

“错误:在 /app/app/controllers/AuthController.php 中找不到类 'Lcobucci\JWT\Signer\Hmac\Sha256'”,好像 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",
}

我的自动加载器.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;
    }
}

我的 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'),
);

【问题讨论】:

  • 在将这个依赖添加到composer.json 后,您是否调用了composer installcomposer update
  • @rob006 是的,但它只更新了 phpmailer 和 phalcon

标签: php composer-php autoload


【解决方案1】:

使用 require_once __ DIR __ 。 '/../../vendor/autoload.php';在 AuthController 中工作但不需要 require_once '/home/$user/api-v3/api/conf/vendor/autoload.php';

【讨论】:

    猜你喜欢
    • 2017-01-07
    • 1970-01-01
    • 2019-10-17
    • 1970-01-01
    • 2019-11-19
    • 2012-12-02
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    相关资源
    最近更新 更多