Laravel 未找到 Lumen Memcached
Laravel Lumen Memcached not found
好的,我刚开始使用 Lumen,我正在尝试使用 Auth,但是调用 Auth::check 或 Auth 的任何其他功能.. 会导致以下错误
致命错误:在第 52 行的 vendor\illuminate\cache\MemcachedConnector.php 中找不到 Class 'Memcached'。
我不想使用以前从未使用过的 Memcached。
我在 .env 文件中禁用它并设置 CACHE_DRIVER 和 SESSION_DRIVER 到数组,但仍然显示相同的错误。
我决定不再使用 Auth 并使用 sessions/tokens 手动处理我的身份验证,但启用 MiddleWare StartSession 会导致相同的错误。
$app->middleware([
// 'Illuminate\Cookie\Middleware\EncryptCookies',
// 'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
'Illuminate\Session\Middleware\StartSession',
// 'Illuminate\View\Middleware\ShareErrorsFromSession',
// 'Laravel\Lumen\Http\Middleware\VerifyCsrfToken',
]);
如果有人能真正帮助我,我将非常高兴
编辑
深入框架之后
我在 SessionManager
Class 中硬编码了会话驱动程序名称
在方法 getSessionConfig
中
public function getSessionConfig()
{
$this->setDefaultDriver("cookie");//I added this line
return $this->app['config']['session'];
}
它虽然有效,但不是一个好的做事方式。
没有配置文件,我相信所有配置都写在 .env 文件中,但我真的不知道为什么 session_driver 和 cache_driver 默认为即使在 .env 然后 运行 composer dump-autoload
... 流明 :(
编辑
这是我的 .env 文件
APP_ENV=local
APP_DEBUG=true
APP_KEY=SomeRandomKey!!!
APP_LOCALE=en
APP_FALLBACK_LOCALE=en
DB_CONNECTION=mysql
DB_HOST=localhost
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=
CACHE_DRIVER=array
SESSION_DRIVER=cookie
QUEUE_DRIVER=database
我的 bootsrap/app.php
中已经取消注释了这一行
Dotenv::load(__DIR__.'/../');
我的数据库配置完美运行,因此加载了 .env 文件
还不错。
您可能需要重新启动服务器,尤其是在您使用 php artisan serve
时。
Lumen 似乎没有接收到每个请求的 .env
更改。
我遇到了完全相同的问题 - 尝试使用文件缓存,但收到有关 Memcached 的错误 - 重新启动服务器会重新加载 .env
文件。
确保不要被未加载的 .env 文件搞砸,默认情况下它在 Lumen 中被注释掉了。因此,如果您在 .env 中指定不同的缓存驱动程序,请执行以下操作。
Note: If you are using the .env file to configure your application, don't forget to uncomment the Dotenv::load() method in your bootstrap/app.php file.
我现在遇到了类似的问题,我无法找到它,但我的猜测是它与默认配置存储在 vendor/laravel/lumen-framework/config
文件夹中的事实有关, DotEnv::$inmutable
设置和 artisan serve
服务器。
对我有用的解决方案是:
在bootstrap/app.php
中加入:
Dotenv::makeMutable();
Dotenv::load(__DIR__.'/../');
Dotenv::makeImmutable();
在.env
文件中,将所有配置设置为"basic drivers"(数组,文件)即使你不去使用它们,因为你 w
我今天在这个问题上花了 3 个小时。借助本主题中的 ,我找到了解决方案。很简单的!希望不会影响到我以后的发展。
只是为了它,在.env
文件中:
CACHE_DRIVER=array
SESSION_DRIVER=array
QUEUE_DRIVER=array
好的,我进行了 UPDATE 因为我遇到了一个关于会话的新问题。事实上,当你设置前面的参数时,你的会话不会持久,就像在 documentation 中说的那样: array - sessions will be stored in a simple PHP array and will not be persisted across requests.
所以我必须更改它,总是在 .env
这样的文件中:
SESSION_DRIVER=cookie
使用 var_dump(Session::all());
我现在可以看到会话的全部值
在我的例子中,我在 .env 文件中添加了 Add CACHE_DRIVER=array
然后
Dotenv::load(__DIR__.'/../');
在我的 bootstrap/app.php
和 .env
文件中开始工作。
对我来说,问题是我使用了 homestead 存储库的 php-7 分支,它没有 PHP memcached 就绪。
检查是否安装了memcached
,如果没有安装运行:
apt-get install php5-memcached
在 .env 文件中替换
#This line:-
CACHE_DRIVER = memcached
#With this:-
CACHE_DRIVER = array
在您的 .env
文件中,您也可以使用 CACHE_DRIVER=file
而不是 CACHE_DRIVER=memcached
这个问题在我安装这个包时解决了,所以至少尝试一下
首先我尝试了这个并且它工作正常
CACHE_DRIVER = array
但转念一想什么是memcached
然后我尝试了这个并且它在不更改驱动程序的情况下工作正常memcached
apt-get install php-memcached
yum 包管理器或亚马逊 Linux。
yum install php-memcached -y
如果您安装了新的 lumen,
您必须将 .env.example
重命名为 .env
。所以它可以读取您的配置!
如果您的 .env 文件属于另一个用户而不是尝试 运行 artisan 命令的用户,就会发生这种情况。
好的,我刚开始使用 Lumen,我正在尝试使用 Auth,但是调用 Auth::check 或 Auth 的任何其他功能.. 会导致以下错误 致命错误:在第 52 行的 vendor\illuminate\cache\MemcachedConnector.php 中找不到 Class 'Memcached'。 我不想使用以前从未使用过的 Memcached。
我在 .env 文件中禁用它并设置 CACHE_DRIVER 和 SESSION_DRIVER 到数组,但仍然显示相同的错误。
我决定不再使用 Auth 并使用 sessions/tokens 手动处理我的身份验证,但启用 MiddleWare StartSession 会导致相同的错误。
$app->middleware([
// 'Illuminate\Cookie\Middleware\EncryptCookies',
// 'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
'Illuminate\Session\Middleware\StartSession',
// 'Illuminate\View\Middleware\ShareErrorsFromSession',
// 'Laravel\Lumen\Http\Middleware\VerifyCsrfToken',
]);
如果有人能真正帮助我,我将非常高兴
编辑
深入框架之后
我在 SessionManager
Class 中硬编码了会话驱动程序名称
在方法 getSessionConfig
public function getSessionConfig()
{
$this->setDefaultDriver("cookie");//I added this line
return $this->app['config']['session'];
}
它虽然有效,但不是一个好的做事方式。
没有配置文件,我相信所有配置都写在 .env 文件中,但我真的不知道为什么 session_driver 和 cache_driver 默认为即使在 .env 然后 运行 composer dump-autoload
... 流明 :(
编辑 这是我的 .env 文件
APP_ENV=local
APP_DEBUG=true
APP_KEY=SomeRandomKey!!!
APP_LOCALE=en
APP_FALLBACK_LOCALE=en
DB_CONNECTION=mysql
DB_HOST=localhost
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=
CACHE_DRIVER=array
SESSION_DRIVER=cookie
QUEUE_DRIVER=database
我的 bootsrap/app.php
中已经取消注释了这一行 Dotenv::load(__DIR__.'/../');
我的数据库配置完美运行,因此加载了 .env 文件 还不错。
您可能需要重新启动服务器,尤其是在您使用 php artisan serve
时。
Lumen 似乎没有接收到每个请求的 .env
更改。
我遇到了完全相同的问题 - 尝试使用文件缓存,但收到有关 Memcached 的错误 - 重新启动服务器会重新加载 .env
文件。
确保不要被未加载的 .env 文件搞砸,默认情况下它在 Lumen 中被注释掉了。因此,如果您在 .env 中指定不同的缓存驱动程序,请执行以下操作。
Note: If you are using the .env file to configure your application, don't forget to uncomment the Dotenv::load() method in your bootstrap/app.php file.
我现在遇到了类似的问题,我无法找到它,但我的猜测是它与默认配置存储在 vendor/laravel/lumen-framework/config
文件夹中的事实有关, DotEnv::$inmutable
设置和 artisan serve
服务器。
对我有用的解决方案是:
在
bootstrap/app.php
中加入:Dotenv::makeMutable(); Dotenv::load(__DIR__.'/../'); Dotenv::makeImmutable();
在
.env
文件中,将所有配置设置为"basic drivers"(数组,文件)即使你不去使用它们,因为你 w
我今天在这个问题上花了 3 个小时。借助本主题中的
只是为了它,在.env
文件中:
CACHE_DRIVER=array
SESSION_DRIVER=array
QUEUE_DRIVER=array
好的,我进行了 UPDATE 因为我遇到了一个关于会话的新问题。事实上,当你设置前面的参数时,你的会话不会持久,就像在 documentation 中说的那样: array - sessions will be stored in a simple PHP array and will not be persisted across requests.
所以我必须更改它,总是在 .env
这样的文件中:
SESSION_DRIVER=cookie
使用 var_dump(Session::all());
我现在可以看到会话的全部值
在我的例子中,我在 .env 文件中添加了 Add CACHE_DRIVER=array
然后
Dotenv::load(__DIR__.'/../');
在我的 bootstrap/app.php
和 .env
文件中开始工作。
对我来说,问题是我使用了 homestead 存储库的 php-7 分支,它没有 PHP memcached 就绪。
检查是否安装了memcached
,如果没有安装运行:
apt-get install php5-memcached
在 .env 文件中替换
#This line:-
CACHE_DRIVER = memcached
#With this:-
CACHE_DRIVER = array
在您的 .env
文件中,您也可以使用 CACHE_DRIVER=file
而不是 CACHE_DRIVER=memcached
这个问题在我安装这个包时解决了,所以至少尝试一下
首先我尝试了这个并且它工作正常
CACHE_DRIVER = array
但转念一想什么是memcached
然后我尝试了这个并且它在不更改驱动程序的情况下工作正常memcached
apt-get install php-memcached
yum 包管理器或亚马逊 Linux。
yum install php-memcached -y
如果您安装了新的 lumen,
您必须将 .env.example
重命名为 .env
。所以它可以读取您的配置!
如果您的 .env 文件属于另一个用户而不是尝试 运行 artisan 命令的用户,就会发生这种情况。