Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 同一领域的多个Laravel 5项目_Php_Laravel_Session_Cookies_Laravel 5.2 - Fatal编程技术网

Php 同一领域的多个Laravel 5项目

Php 同一领域的多个Laravel 5项目,php,laravel,session,cookies,laravel-5.2,Php,Laravel,Session,Cookies,Laravel 5.2,我在同一个域的子文件夹上运行了几个Laravel 5项目 每个Laravel应用程序都在生成自己的会话cookie,有时它生成的会话cookie太多,以至于我们在整个域上都会收到http 400错误 我应该在所有这些项目之间共享存储文件夹,还是有任何设置可以防止这种情况发生?我认为您需要为每个子文件夹提供唯一的安全密钥,并为每个子文件夹添加一个特殊变量,然后更改生成的cookie您应该设置Homestead。它非常容易使用。您可以设置多个域,例如:domain1.dev、domain2.dev。

我在同一个域的子文件夹上运行了几个Laravel 5项目

每个Laravel应用程序都在生成自己的会话cookie,有时它生成的会话cookie太多,以至于我们在整个域上都会收到http 400错误


我应该在所有这些项目之间共享存储文件夹,还是有任何设置可以防止这种情况发生?

我认为您需要为每个子文件夹提供唯一的安全密钥,并为每个子文件夹添加一个特殊变量,然后更改生成的cookie

您应该设置Homestead。它非常容易使用。您可以设置多个域,例如:domain1.dev、domain2.dev。对于每个域,您将拥有自己的cookie

每个Laravel安装应位于其自己的目录中

然后需要定义一个别名,将域子文件夹指向“child”Laravel文件夹

Apache
http.conf
中的示例:

<VirtualHost some.domain:80>

    ServerName some.domain

    ## Path to laravel domain
    DocumentRoot "/path/to/some/domain/laravel-1/public"
    <Directory "/path/to/some/domain/laravel-1/public">
        AllowOverride All
    </Directory>

    ## Path to laravel sub-folder
    Alias /laravel-2-path-alias/ "/path/to/some/domain/laravel-2/public"
    <Directory "/path/to/some/domain/laravel-2/public">
        AllowOverride All
    </Directory>

</VirtualHost>
子文件夹安装
config\session.php

'cookie' => 'a_unique_name'
'path' => '/',
'cookie' => 'another_unique_name'
'path' => '/path/to/sub/folder',

这应该确保每个安装都在编写自己独特的会话cookie。子应用程序生成的任何cookie都不应干扰父应用程序的cookie

既然我找到了解决方案,让我和大家分享一下

首先,您需要使用诸如Redis或database之类的共享会话驱动程序

其次,需要在config/session.php上设置会话cookie和路径相同

之后,您可以在同一个域上运行尽可能多的不同Laravel项目,而不会出现cookie问题

如果您的应用程序根本不需要会话,您可以在app/Http/Kernel.php上完全禁用会话,并注释以下行:

\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,

将httpd.conf文件编辑为

请检查路径是否因您的系统而异/opt/lampp/htdocs//var/www/html/

## Path to laravel sub-folder
Alias /admin-boilerplate/ "/opt/lampp/htdocs/admin-boilerplate/public/"
<Directory "/opt/lampp/htdocs/admin-boilerplate/public">
    AllowOverride All
</Directory>
完整的代码看起来像

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    # It enables routes when documrnt root set to public foder in httpd.conf file
    # change name according to alias name
    RewriteBase /admin-boilerplate
</IfModule>

选项-多视图-索引
重新启动发动机
#句柄授权头
RewriteCond%{HTTP:Authorization}。
重写规则。*-[E=HTTP\U授权:%{HTTP:AUTHORIZATION}]
#如果不是文件夹,则重定向尾部斜杠。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_URI}(+)/$
重写规则^1[L,R=301]
#处理前控制器。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]
#在httpd.conf文件中将documrnt root设置为public foder时,它启用路由
#根据别名更改名称
重写基本/管理样板文件

我们已经在生产中,我们需要多个子文件夹上的多个项目。您是否可以只使用一个,然后使用子域路由,并为每个站点使用包系统等?有点过时,但能给你一个想法吗?我不能,我们真的需要每个项目都在一个子文件夹中。对不起,我读了subdomainnot文件夹?抱歉,我们的项目已经开始运行了,问题是关于会话cookies。我可以共享同一个会话吗
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    # It enables routes when documrnt root set to public foder in httpd.conf file
    # change name according to alias name
    RewriteBase /admin-boilerplate
</IfModule>