samhernandez / craft-db-paths
使用完整的路径修复Craft数据库备份和恢复失败的问题,包括psql、mysql和mysqldump可执行文件。
Requires
- craftcms/cms: ^3.0.0
This package is auto-updated.
Last update: 2024-09-11 14:11:02 UTC
README
如果您已经知道如何使用,请跳转到 使用说明。
背景
Craft默认依赖于mysqldump
和mysql
可执行文件来备份和恢复数据库。默认的备份命令看起来像这样
mysqldump […options…] {database} > {file}'
问题在于,虽然mysqldump
可能在系统中可用,但运行在Web请求下的PHP不知道在哪里找到它,因为它不在PATH
环境变量指定的任何目录中。这在用MAMP本地运行时是正确的。在EC2实例上运行RDS上的MariaDB时有时也是如此。
因此,Craft为您提供了两个配置变量:backupCommand
和 restoreCommand
。您可以编写自己的命令,包括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
或其它地方设置环境变量即可。