Php Lumen-更改默认存储路径
我正在尝试了解如何更改Lumen项目上的默认存储位置(包括其子文件夹)。出于多种原因,考虑到生产web服务器的当前配置,Lumen在尝试写入日志或编译刀片视图时会抛出权限拒绝异常 在不涉及系统管理员的情况下,唯一的替代方法是将存储文件夹移动到Web服务器上的tmp文件夹 在laravel上似乎有一种称为“useStoragePath”的方法,但在Lumen(5.2.x)上似乎没有 默认路径似乎是“硬编码”的,我发现:Php Lumen-更改默认存储路径,php,laravel,lumen,Php,Laravel,Lumen,我正在尝试了解如何更改Lumen项目上的默认存储位置(包括其子文件夹)。出于多种原因,考虑到生产web服务器的当前配置,Lumen在尝试写入日志或编译刀片视图时会抛出权限拒绝异常 在不涉及系统管理员的情况下,唯一的替代方法是将存储文件夹移动到Web服务器上的tmp文件夹 在laravel上似乎有一种称为“useStoragePath”的方法,但在Lumen(5.2.x)上似乎没有 默认路径似乎是“硬编码”的,我发现: Project\vendor\laravel\lumen-framework\
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);
}
对于日志(同一文件):
底线:记住这些限制,是否有任何干净的方法覆盖默认存储路径?:
- 它不应该涉及系统管理员(sym链接、更改权限等)
- 不篡改供应商文件夹
if (! function_exists('storage_path'))
这意味着如果名为storage\u path
的函数尚未定义,则Lumen将使用自己的实现
您只需编写自己的函数,返回自己的自定义路径即可
因为Lumen的规则比Laravel少得多,所以如何做到这一点完全取决于您。也就是说,我建议按以下方式进行:
存储路径
实现如何将其设置为
/public
?
if (! function_exists('storage_path')) {
/**
* Get the path to the storage folder.
*
* @param string $path
* @return string
*/
function storage_path($path = '')
{
return app()->storagePath($path);
}
}
if (! function_exists('storage_path'))
require_once __DIR__ . '/../app/helpers.php';
require_once __DIR__ . '/../vendor/autoload.php';
try {
(new Dotenv\Dotenv(__DIR__ . '/../'))->load();
} catch (Dotenv\Exception\InvalidPathException $e) {
//
}
....