- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用 Laravel 5(具体来说,“laravel/framework”版本是“v5.0.27”), session 驱动程序 = 'file'。
我正在 Windows 7 64 位机器上开发。
我注意到有时(大约一周一次)我会意外地随机退出。有时甚至在我登录后立即发生这种情况。我已将日志消息添加到我的身份验证逻辑代码中,但未触发日志代码。 Laravel 表现得好像它已经完全丢失了 session 文件。
另一个更严重的问题是,有时在调试 session (使用 xdebug 和 Netbeans)之后,Laravel 也开始丢失其他文件 - .env 设置、一些 debugbar JS 文件等。错误日志包含如下消息:
[2015-07-08 13:05:31] local.ERROR: exception 'ErrorException' with message 'mcrypt_encrypt(): Key of size 7 not supported by this algorithm. Only keys of sizes 16, 24 or 32 supported' in D:\myproject\vendor\laravel\framework\src\Illuminate\Encryption\Encrypter.php:81
[2015-07-08 13:05:31] local.ERROR: exception 'PDOException' with message 'SQLSTATE[HY000] [1044] Access denied for user ''@'localhost' to database 'forge'' in D:\myproject\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:47
'database' => env('DB_DATABASE', 'forge'),
'key' => env('APP_KEY', 'somekey'),
setInterval(function(){
$scope.getGridPagedDataAsync();
}, 500);
$value = array_get($_ENV, $key, getenv($key));
Dotenv::$cached[$key]
最佳答案
我个人认为使用 .env 来配置 Laravel 是一个错误的决定。拥有包含 key:value 配置样式的 .php 文件要好得多。
但是,您遇到的问题不是 PHP 的错,也不是 Apache 的错 - 这很可能是 Windows 问题。
其他一些事情: Apache 包含一个模块,该模块允许将 PHP 二进制文件集成到 Apache 的进程或线程中,称为 mod_php
- 问题在于 PHP 不仅速度慢,而且将另一个二进制文件集成到现有二进制文件中非常棘手,可能会遗漏一些东西。在这种情况下,PHP 还必须使用线程安全来构建。如果不是,那么奇怪的错误可能(并且将会)发生。
为了避免将一个程序复杂地集成到另一个程序中的问题,我们可以完全避免这种情况,我们可以使用 .php
通过 FastCGI 协议(protocol)提供服务。这意味着 Web 服务器(Apache 或 Nginx)将接收 HTTP 请求并将其传递给另一个“Web”服务器。在我们的例子中,这将是 PHP FastCGI 进程管理器或 PHP-FPM
.PHP-FPM
是首选的服务方式.php
页面 - 不仅因为它更快(比通过 mod_php
集成要快得多),而且您可以轻松扩展 HTTP 前端并让多台机器提供服务 .php
页面,让您可以轻松地横向扩展您的 HTTP 前端。
然而,PHP-FPM
是一种称为主管进程的东西,它依赖于进程控制。据我所知,Windows 不像 *nix 那样支持进程控制,因此 php-fpm
不适用于 Windows(如果我在这里错了,请纠正我)。
这一切对你来说意味着什么?这意味着您应该使用旨在与您想做的事情完美配合的软件。
这是应该遵循的逻辑:
php-fpm
. php-fpm
处理请求(在您的情况下它会启动 Laravel)并返回 Web 服务器向用户显示的 HTML php-fpm
服务。 ,您将遇到 session 问题。这就是 Laravel 做得很棒的地方 - 它允许您使用基于 cookie 的加密 session 。它有一些限制(您不能在这些 session 中存储资源,并且有大小限制),但是正确构建的应用程序首先不会在 session 中存储太多信息。当然,有多种处理 session 的方法,但在我看来,加密的 cookie 是 super 、 super 简单易用且功能强大的。当使用这样的 cookie 时,携带 session 信息的是客户端,任何包含解密 key 的机器都可以读取此 session ,这意味着您可以轻松地将您的设置扩展到多个服务器 - 他们所要做的就是访问相同的解密 key (它是
APP_KEY
中的
.env
)。基本上,您需要将相同的 Laravel 安装复制到您希望为项目提供服务的机器上。
php-fpm
在 VM 上为您的项目提供服务 关于php - Laravel 5 在 AJAX 密集型应用程序中丢失 session 和 .env 配置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31295126/
这个问题已经有答案了: env-cmd error failed to locate ./.env file in gatsby? (14 个回答) 已关闭 3 年前。 我正在学习 Gatsby 教程
我正在尝试使用 mgcv-package,但 mgcv::gam-function 只返回一条错误消息 Tmean = c(1,3,10,5,7) prec = c(300,500,700,600,5
在 Laravel 6 中 Documentation Application Key的第二段是这样写的 Typically, this string should be 32 characters
我试图在创建消息时传递 sns 主题。但根据创建的变量,arn 可能会有所不同。 例如,在环境变量中,我将有 3 个人及其主题。 john = arn:xxxxxxxx sally= arn:xxxx
我开始学习 Angular2,我发现在示例中它们覆盖了配置文件中的 process.env.NODE_ENV 和 process.env.ENV 变量。此代码来自 this example 的 web
我从头开始创建了一个Kotlin原生应用程序,我得到了上面的错误。我怎么才能解决这个问题呢?这是一款简单的“Hello World”应用程序。我有其他计算机,但该错误没有出现在那里。我认为这与科南没有
我有一个 Dockerfile,我在其中设置了一些环境变量(在我运行容器时使用)。一些环境变量依赖于以前的环境变量。当我可以替换为一个变量时,我想保持干爽并避免多次对环境变量的值进行硬编码。 在这个简
我正在学习 Docker 并面临将一个 env 变量的值替换为另一个 env 变量的问题。 这是我的 Dockerfile FROM ubuntu ENV var_env=Tarun ENV comm
我正在将一个项目从 Symfony 2.3 升级到 Symfony 3.4,我对 .env 和 .env.dist 文件之间的关系有点困惑。据我了解,它们之间的关系与Symfony2中paramete
在 python 中,有没有办法从特定的 .env 文件中检索 env 变量的值?例如,我有多个 .env 文件,如下所示: .env.a .env.a ... 我在 .env.b 中有一个名为 IN
我假设我的身份验证服务无法加载配置文件,从而导致错误。我正在关注 AUTH0 上的教程。这是链接 https://auth0.com/blog/real-world-angular-series-pa
我正在使用 base.env 作为我的几个 docker 服务的 env_file。在这个 base.env 中,我有几个部分的环境变量在整个文件中重复。例如,对于三个不同的环境变量,port 和 i
我正在尝试使用 values.SecretValue() 设置我的 aws 存储桶名称。要设置 Django 的媒体 url,我过去使用过: AWS_STORAGE_BUCKET_NAME = val
我通过从PowerShell运行$env:path ="$($env:path);."来“解决”一个问题。显然,它将当前目录添加到了我的路径。请添加到哪个路径变量?在我的环境变量对话框中,我会在哪里看
我有一个很长的自定义应用程序配置文件,用于在工作站上运行的应用程序,其中一些文本元素必须在系统之间手动更改。 这个脚本是为了让我的生活更轻松 - $content = Get-Content("C:\
因为我使用docker和docker-compose而不是Homestead和任何基于Vargrant的开发解决方案,所以我想避免与laravel在.env文件的使用上发生冲突。因此,我希望larav
当我尝试最后一个例子时 perlfaq5: How-do-I-count-the-number-of-lines-in-a-file?我收到一条错误消息。我应该怎样做才能使脚本正常工作? #!/usr
我试图理解为什么当我从我的 .env 文件中明确删除或注释掉它们时,我的 Docker 容器中的 env 变量仍然出现。我是 Docker 的新手,不知道这是预期的行为还是异常。 我的系统设置方式是,
我正在使用 PHP 和 Laravel 框架,我使用 .env 来设置我的环境变量。然后我从我的 PHP 环境调用 python 脚本,并将结果返回给 PHP。我的问题是,在 Python 中设置的默
我安装了 Anaconda 并创建了一个新环境(“dell_proj”)。然后我用我的新环境在 Pycharm 中创建了一个新项目。我的期望是我只能在这个项目中使用我通过 Conda 在特定环境中安装
我是一名优秀的程序员,十分优秀!