我的一位客户想要迁移旧的Laravel应用程序。他们的ICT部门将代码转储到了我们的服务器上,但无法正常工作。进行一些配置后,我们将获得登录页面,但是登录后,它会显示“该页面由于不活动而过期。请刷新并重试。”
Laravel 5.8 Dockerized Nginx代理
问题1:返回的html不指向公用文件夹。我尝试了多种方法修复它,但都无济于事。似乎可以提供公用文件夹中所有文件的东西是.htaccess文件
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteRule ^assets/(.*)$ https://%{HTTP_HOST}/public/assets/$1 [L,R=301]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^/assets/(.*)$ /public/assets/$1 [L,QSA]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
问题2:csrf令牌可能是罪魁祸首
我在Kernel.php中禁用了VerifyCsrfToken中间件
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
// \App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'api' => [
'throttle:60,1',
'bindings',
],
];
问题3:重新生成密钥并更新.env
php artisan key:generate
问题4:存储文件夹中的文件权限
我授予了该文件夹的所有权限递归
chmod 777 -R ./storage
为进行调试,我在.env文件中设置了此值
APP_DEBUG=true
APP_LOG_LEVEL=debug
会话驱动程序设置为值“文件”,但使用值“数组”进行了测试,但没有区别。
'driver' => env('SESSION_DRIVER', 'file'),
我是Laravel的新手,我正在寻找一种解决此问题或正确调试问题的方法。