这是可能的,但您需要完成几个步骤。首先通过扩展Illuminate\Foundation\Application
您自己的应用程序类并覆盖该bootstrapPath()
方法。bootstrap/app.php
然后,您还必须从您的自定义引导文件夹符号链接回原始文件。
例子
步骤1
/app/Applications/MyApp.php
- 新的自定义应用程序类
<?php
namespace App\Applications;
use Illuminate\Foundation\Application as Laravel;
class MyApp extends Laravel
{
public function bootstrapPath($path = '')
{
$bootstrap_env = getenv('APP_BOOTSTRAP');
if(!$bootstrap_env || !file_exists($bootstrap_env) || !file_exists($bootstrap_env.'/app.php')){
dd("Install incomplete, please set bootstrap folder via APP_BOOTSTRAP, make sure the folder exists and the app.php is sym linked");
}
return $bootstrap_env;
}
}
第2步
/app/bootstrap/app.php
- 更新以实例化新的自定义类
- $app = new Illuminate\Foundation\Application(
- realpath(__DIR__.'/../')
- );
+ $app = new App\Applications\MyApp(
+ realpath(__DIR__.'/../')
+ );
最后
创建自定义文件夹(确保它们是可写的)和当前 app.php 到自定义引导位置的符号链接。
mkdir -p /mycustomlocation/bootstrap/cache/
ln -s /laravel/install/bootstrap/app.php /mycustomlocation/bootstrap/app.php
useEnvironmentPath()
*我们将此与使用实例化的方法设置自定义 .env 位置相结合$app
。