samhernandez/craft-db-paths

使用完整的路径修复Craft数据库备份和恢复失败的问题,包括psql、mysql和mysqldump可执行文件。

安装: 922

依赖: 0

建议者: 0

安全: 0

星标: 2

关注者: 2

分支: 0

开放问题: 1

类型:craft-module

1.0.2 2020-01-10 20:58 UTC

This package is auto-updated.

Last update: 2024-09-11 14:11:02 UTC


README

如果您已经知道如何使用,请跳转到 使用说明

背景

Craft默认依赖于mysqldumpmysql可执行文件来备份和恢复数据库。默认的备份命令看起来像这样

mysqldump […options…] {database} > {file}'

问题在于,虽然mysqldump可能在系统中可用,但运行在Web请求下的PHP不知道在哪里找到它,因为它不在PATH环境变量指定的任何目录中。这在用MAMP本地运行时是正确的。在EC2实例上运行RDS上的MariaDB时有时也是如此。

因此,Craft为您提供了两个配置变量:backupCommandrestoreCommand。您可以编写自己的命令,包括mysqldump可执行文件的完整路径。对于MAMP,可能像这样

/Applications/MAMP/Library/bin/mysqldump […options…] {database} > {file}

问题是,Craft的默认转储命令非常好。它排除了不必要的会话、缓存和资产数据。您可以在Schema::defaultBackupCommand()方法中看到它是如何为MySQL构建的。如果您可以用完整的路径替换mysqldump而不必自己编写命令会怎么样?这正是这个模块的作用。

使用方法

安装

这是一个Craft CMS的模块,而不是Craft插件商店中的插件。它通过命令行使用composer安装。

在项目根目录中运行以下命令。

composer require samhernandez/craft-db-paths

打开/config/app.php,将CraftDbPaths类添加为模块,并引导它。示例

return [
    'modules' => [
        'craft-db-paths' => \samhernandez\craftdbpaths\CraftDbPaths::class,
    ],
    'bootstrap' => ['craft-db-paths'],
];

配置

将以下任何环境变量添加到您的.env文件中。这里是一个Mac上MySQL的MAMP示例。

PATH_TO_MYSQL=/Applications/MAMP/Library/bin/mysql
PATH_TO_MYSQLDUMP=/Applications/MAMP/Library/bin/mysqldump

如有必要,您还可以添加Postgres的路径。

PATH_TO_PSQL=/usr/local/bin/psql
PATH_TO_PGDUMP=/usr/local/bin/pg_dump

不需要配置文件,只需在.env或其它地方设置环境变量即可。