我希望设置laravel的一个实例并运行多个应用程序。每个应用都有自己的命名空间,包含自定义路由、配置、资产、视图和自己的comcomposer .json。所有应用程序将共享相同的供应商文件。这是我目前所做的。创建了多个命名空间,这就是每个应用程序目录结构的样子
|--app
|--App1
|-- app
|-- Bootstrap
|-- config
|-- database
|-- public
|-- resources
|-- storage
|-- ..
|-- composer.json
|-- App2
|--..
|--vendor
来解决供应商依赖,我在composer中更改了供应商文件夹位置。Json喜欢这样
"config": {
"preferred-install": "dist",
"vendor-dir":"../vendor"
}
我还更新了autoload.php中的供应商路径,以指向正确的位置。
我设置这个项目的环境也运行其他laravel项目。所有的成分都在那里(htaccess, vhosts, ....)。
当我运行composer dump- autolload时,一切都加载了,我没有得到任何错误。当我导航到我的路线时,我得到一个空白页。应用程序调试设置为true。
我以这种方式建立laravel的方法正确吗?如果有,我哪里做错了,或者我做错了什么。
提前谢谢你。
在我从下面的评论中得到一点提示之后,我能够使设置工作。1 -确保存储权限设置为775可写。2 -确保你已经创建了。env文件。在我的例子中,我必须创建它,没有转移。
my vhosts
<VirtualHost *:80>
ServerName app1.server.local
ServerAdmin webmaster@localhost
DocumentRoot /var/www/tenants/app1/public
<Directory /var/www/tenants/app1/public/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName app2.server.local
ServerAdmin webmaster@localhost
DocumentRoot /var/www/tenants/app2/public
<Directory /var/www/tenants/app2/public/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
希望这有助于任何人希望建立一个laravel实例和运行多个应用程序。
Tim的评论指出了我所忽略的东西。我将存储文件夹权限更改为775。我添加了。env文件。和Booya,我有多个应用程序与一个laravel实例。
Laravel 5、6和7 +
添加新的供应商文件夹config:
...
"config": {
...,
"vendor-dir": "../vendor"
},
...
然后运行composer update
那么你需要修改两个文件:
您的应用程序:
public/index.php
require __DIR__.'/../../vendor/autoload.php';
你的工匠命令在根文件夹:
artisan
require __DIR__.'/../vendor/autoload.php';
Illuminate'Foundation'PackageManifest
中的包自动发现:$this->vendorPath = $basePath.'/../vendor'; //Change this line in constructor
并重新运行
php artisan package:discover --ansi