【发布时间】:2016-11-17 23:50:28
【问题描述】:
我正在尝试了解如何更改 Lumen 项目的默认存储位置(包括其子文件夹)。出于多种原因,鉴于生产 Web 服务器的当前配置,Lumen 在尝试写入日志或编译 Blade 视图时会抛出权限被拒绝异常。
在不涉及系统管理员的情况下,唯一的替代方法是将存储文件夹移动到网络服务器上的 tmp 文件夹。
在 laravel 上似乎有一个名为“useStoragePath”的方法,但它似乎在 Lumen (5.2.x) 上不可用。
默认路径似乎是“硬编码”的,我发现了这个:
Project\vendor\laravel\lumen-framework\src\Application.php
/**
* Get the storage path for the application.
*
* @param string|null $path
* @return string
*/
public function storagePath($path = null)
{
return $this->basePath().'/storage'.($path ? '/'.$path : $path);
}
对于日志(同一个文件):
/**
* Get the Monolog handler for the application.
*
* @return \Monolog\Handler\AbstractHandler
*/
protected function getMonologHandler()
{
return (new StreamHandler(storage_path('logs/lumen.log'), Logger::DEBUG))
->setFormatter(new LineFormatter(null, null, true, true));
}
底线:是否有任何干净的方法可以覆盖默认存储路径并牢记这些限制?:
- 不应涉及系统管理员(符号链接、更改权限等)
- 未篡改供应商文件夹。
【问题讨论】: