我希望设置一个laravel实例并运行多个应用程序。每个应用程序都有自己的命名空间,包括自定义路由,配置,资产,视图和自己的composer.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-autoload时,一切都加载我没有错误。当我导航到我的路线时,我得到一个空白页面。 App debug设置为true。
我以这种方式设置laravel的方法是否正确?如果是的话我哪里出错或者我做错了什么 非常感谢。
在我从下面的评论中得到一点提示后,我能够进行设置工作。 1 - 确保存储权限设置为775可写。 2 - 确保您已创建.env文件。在我的情况下,必须创建它,确实转移。
我的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实例并运行多个应用程序的人。
答案 0 :(得分:0)
答案 1 :(得分:0)
对于Laravel 5、6和7 +
添加新的供应商文件夹配置后:
...
"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