【发布时间】: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 install或composer update? -
@rob006 是的,但它只更新了 phpmailer 和 phalcon
标签: php composer-php autoload