n98/magerun2

用于管理 Magento 项目和安装的工具

7.4.0 2024-04-23 09:59 UTC

README

n98-magerun Logo

n98 magerun CLI 工具提供了一些方便的工具,用于从命令行与 Magento / Mage-OS / Adobe Commerce 交互。

适用于 Magento 开发者、系统管理员和 DevOps 的瑞士军刀

Gitter

构建状态

开发在 develop 分支进行。

此软件仅在 Magento 2 下运行。

如果您使用 Magento 1,请使用另一个稳定版本(https://github.com/netz98/n98-magerun)。

兼容性

工具将自动测试多个 PHP 版本。它目前在各种 Linux 发行版和 Mac OS X 上运行。Microsoft Windows 不完全受支持(一些命令如 db:dumpinstall 被排除)。

我们支持的 Magento 版本如下

  • 2.4.x 开源/ Commerce
  • 2.3.x 开源/ Commerce(最后一个兼容的 n98-magerun2 版本是 v5.2.0)
  • 2.2.x 开源/ Commerce(最后一个兼容的 n98-magerun2 版本是 v3.2.0)

我们支持的 PHP 版本如下

  • PHP 8.3
  • PHP 8.2
  • PHP 8.1
  • PHP 7.4
  • PHP 7.3(最后一个兼容版本是 v6.1.1)
  • PHP 7.2(最后一个兼容版本是 v4.7.0)

安装

有三种方式可以安装这些工具

下载并安装 Phar 文件

文件服务器 下载最新的稳定 n98-magerun phar 文件

wget https://files.magerun.net/n98-magerun2.phar

或者如果您想使用 Curl

curl -O https://files.magerun.net/n98-magerun2.phar

通过比较网站上的 SHA256 校验和来验证下载

shasum -a256 n98-magerun2.phar

还可以自动验证

curl -sS -O https://files.magerun.net/n98-magerun2-latest.phar
curl -sS -o n98-magerun2-latest.phar.sha256 https://files.magerun.net/sha256.php?file=n98-magerun2-latest.phar
shasum -a 256 -c n98-magerun2-latest.phar.sha256

如果它显示与网站上的相同的校验和,则您已成功下载了文件。

现在您可以设置 phar 文件为可执行

chmod +x ./n98-magerun2.phar

基本安装现在完成,您可以验证它

./n98-magerun2.phar --version

命令应该可以成功执行,并显示 N98-Magerun 的版本号,例如

n98-magerun2 版本 4.8.0 by valantic CEC

您现在已成功安装 Magerun!您可以进一步定制安装,例如将其安装为系统范围内的,并启用自动完成 - 请继续阅读有关这些和其他功能的信息。

如果您想将命令系统化,可以将其复制到 /usr/local/bin

sudo cp ./n98-magerun2.phar /usr/local/bin/

通过 Composer 安装 Phar

我们提供特殊的 dist 包,可通过 Composer 安装 phar 文件。有关详细信息,请参阅 https://packagist.org.cn/packages/n98/magerun2-dist。dist 包的主要优势是不存在包依赖关系。

通过 Composer 安装(源代码包)- 不推荐

通过 Composer 安装 不推荐,因为它无法与所有项目和 Magento 核心依赖项兼容。请使用 Phar 文件而不是 Composer 版本。我们无法再为所有 Magento 版本提供兼容性。

更新

有一个 self-update 命令可用。这仅适用于 phar 分发。

./n98-magerun2.phar self-update [--dry-run]

使用 --dry-run 选项可以下载并测试 phar 文件而不替换旧文件。

自动完成

Magerun 的自动完成文件位于 res/autocompletion 文件夹中。以下是一些关于特定文件(Bash)的更多信息,还有其他文件(例如 Fish、Zsh)。

Bash

bash自动补全是预先生成的,所有命令及其对应选项都可在按Tab键时显示。要获取选项的补全,请输入两个短横线(--)然后按Tab键。

要安装补全文件,将n98-magerun2.phar.bash复制到您的bash兼容目录文件夹中进行自动补全。

在我的Ubuntu系统中,可以使用以下命令完成此操作

sudo cp res/autocompletion/bash/n98-magerun2.phar.bash /etc/bash_completion.d/

具体文件夹可以通过pkg-config获得

pkg-config --variable=compatdir bash-completion

有关详细信息,请参阅bash-completions FAQ:https://github.com/scop/bash-completion#faq

使用说明 / 命令

注意还有更多命令可供使用,请在此处查阅。请使用列表命令查看所有命令。

所有命令都试图检测当前的Magento根目录。如果您有多个Magento安装,您必须更改您的工作目录到您首选的安装。

您可以通过以下方式列出所有可用的命令

n98-magerun2.phar list

如果您未在系统范围内安装.phar文件,可以使用PHP CLI解释器调用它

php n98-magerun2.phar list

全局配置参数

调用核心Magento命令

该工具可以用来运行核心Magento命令。我们提供了一个内部代理命令,通过bin/magento调用原始Magento命令。所有选项和参数都传递给原始命令。

如果您不想使用代理命令,可以使用--skip-core-commands选项来禁用它。

代理命令的一个主要优点是,您可以运行任何命令而无需更改工作目录到Magento根目录或指定bin/magento的路径,如果您的当前工作目录在Magento安装内。

如果您不在Magento根目录外,可以通过指定--root-dir选项来运行任何命令。这对于有多个Magento安装或在某种自动化中使用时非常有用。

对于核心命令,我们过滤环境变量以避免启用xdebug扩展时出现的问题。

在浏览器中打开商店

n98-magerun2.phar open-browser [store]

客户信息

通过电子邮件地址加载基本客户信息。

n98-magerun2.phar customer:info [email] [website]

创建客户

为商店前端创建新的客户/用户。

n98-magerun2.phar customer:create [email] [password] [firstname] [lastname] [website]

示例

n98-magerun2.phar customer:create foo@example.com password123 John Doe base

您可以添加任意数量的自定义字段,例如

n98-magerun2.phar customer:create foo@example.com passworD123 John Doe base taxvat DE12345678 prefix Mrs.

列出客户

列出客户。输出限制为1000(可以通过覆盖配置来更改)。如果提供了搜索参数,则客户将被过滤(搜索名,姓和电子邮件)。

n98-magerun2.phar customer:list [--format[="..."]] [search]

更改客户密码

n98-magerun2.phar customer:change-password [email] [password] [website]
  • 如果有多于一个网站可用,则必须提供网站参数。

为Webapi创建客户令牌

n98-magerun2.phar customer:token:create <email>

删除客户

n98-magerun2.phar customer:delete [-f|--force] [-a|--all] [-r|--range] [--fuzzy] [--id=ID] [--website=ID] [--email=EMAIL] [--firstname=STRING] [--lastname=STRING]

示例

n98-magerun2.phar customer:delete --id 1                     # Will delete customer with Id 1
n98-magerun2.phar customer:delete --fuzzy --email=test       # Will delete all customers with email like "%test%"
n98-magerun2.phar customer:delete --all                      # Will delete all customers
n98-magerun2.phar customer:delete --range                    # Will prompt for start and end Ids for batch deletion

通过给定id或网站id和电子邮件的组合、网站id和姓和名来删除客户。此外,您可以删除一组客户id或删除所有客户。

添加客户地址

n98-magerun2.phar customer:add-address [email] [website] [--firstname=STRING] [--lastname=STRING] [--street=STRING] [--city=STRING] [--country=STRING] [--postcode=STRING] [--telephone=STRING] [--default-billing] [--default-shipping]

示例

n98-magerun2.phar customer:add-address foo@example.com base --firstname="John" --lastname="Doe" --street="Pariser Platz" --city="Berlin" --country="DE" --postcode="10117" --telephone="1234567890"  # add address of brandenburger tor to customer with email "foo@example.com" in website "base"
n98-magerun2.phar customer:add-address foo@example.com base --firstname="John" --lastname="Doe" --street="Pariser Platz" --city="Berlin" --country="DE" --postcode="10117" --telephone="1234567890" --default-billing --default-shipping # add address of brandenburger tor to customer with email "foo@example.com" in website "base" as default billing and shipping

通过电子邮件和网站定义给定的客户添加客户地址

Magento安装程序

  • 如果尚未安装,则下载Composer。
  • 下载Magento 2。
  • 如果不存在,则尝试创建数据库。
  • 安装Magento示例数据。
  • 启动Magento安装程序
  • 在.htaccess文件中设置重写基本路径

交互式安装程序

n98-magerun2.phar install

无人值守安装

n98-magerun2.phar install [--magentoVersion[="..."]] [--magentoVersionByName[="..."]] [--installationFolder[="..."]] [--dbHost[="..."]] [--dbUser[="..."]] [--dbPass[="..."]] [--dbName[="..."]] [--installSampleData[="..."]] [--useDefaultConfigParams[="..."]] [--baseUrl[="..."]] [--replaceHtaccessFile[="..."]]

无人值守安装的示例:Magento CE 2.0.0.0 dev beta 1

n98-magerun2.phar install --dbHost="localhost" --dbUser="mydbuser" --dbPass="mysecret" --dbName="magentodb" --installSampleData=yes --useDefaultConfigParams=yes --magentoVersionByName="magento-ce-2.0.0.0-dev-beta1" --installationFolder="magento2" --baseUrl="http://magento2.localdomain/"

此外,使用--noDownload选项,您可以在给定的数据库上安装已存储在--installationFolder中的Magento工作副本。

Magento系统信息

提供有关版本、配置的缓存后端、数据量或已安装软件包的信息。

n98-magerun2.phar sys:info

选项

Magento商店

列出所有商店视图。

n98-magerun2.phar sys:store:list [--format[="..."]]

Magento 网站列表

列出所有网站。

n98-magerun2.phar sys:website:list [--format[="..."]]

列出计划任务

列出在 crontab.xml 文件中定义的所有计划任务。

n98-magerun2.phar sys:cron:list [--format[="..."]]

运行计划任务

通过代码运行计划任务。

n98-magerun2.phar sys:cron:run [job]

如果没有传递 job 参数,您可以从列表中选择一个任务。查看操作:[http://www.youtube.com/watch?v=QkzkLgrfNaM](http://www.youtube.com/watch?v=QkzkLgrfNaM) 如果存在选项计划,则不会启动 cron,而是在 Magento crontab 中立即安排。

终止正在运行的任务

n98-magerun2.phar sys:cron:kill [--timeout <seconds>] [job_code]

如果没有指定任务,将显示所有正在运行的任务的交互式选择。只有在进程在 n98-magerun2 相同的机器上运行时,才能终止任务。

进程终止的默认超时时间为 5 秒。

计划任务历史记录

带有状态的最后执行的计划任务。

n98-magerun2.phar sys:cron:history [--format[="..."]] [--timezone[="..."]]

创建 app/etc/env.php

交互式创建 env 文件。也可以更新现有文件。要更新单个值,可以使用命令 config:env:set

n98-magerun2.phar config:env:create

在 env.php 文件中设置单个值

通过提供密钥和可选值在 env.php 中设置单个值。如果没有设置值,则命令将保存空字符串作为默认值。

config.php 中的子数组可以通过在数组中添加 "." 字符来指定。

n98-magerun2.phar config:env:set <key> [<value>]

您还可以选择提供 json 文本参数作为值,使用可选的 --input-format=json 标志。这将允许您添加不是字符串的其他标量类型的值。

示例

n98-magerun2.phar config:env:set backend.frontName mybackend
n98-magerun2.phar config:env:set crypt.key bb5b0075303a9bb8e3d210a971674367
n98-magerun2.phar config:env:set session.redis.host 192.168.1.1
n98-magerun2.phar config:env:set 'x-frame-options' '*'

n98-magerun2.phar config:env:set --input-format=json queue.consumers_wait_for_messages 0
n98-magerun2.phar config:env:set --input-format=json directories.document_root_is_pub true
n98-magerun2.phar config:env:set --input-format=json cron_consumers_runner.consumers '["some.consumer", "some.other.consumer"]'

从 env.php 文件中删除密钥

通过提供密钥从 env.php 文件中删除配置。

config.php 中的子数组可以通过在数组中添加 "." 字符来指定。

n98-magerun2.phar config:env:delete <key>

示例

n98-magerun2.phar config:env:delete system
n98-magerun2.phar config:env:delete cache.frontend.default.backend
n98-magerun2.phar config:env:delete cache.frontend.default.backend_options

显示 env.php 设置

n98-magerun2.phar config:env:show [options] [<key>]

如果没有传递密钥,则将显示文件的全部内容作为表格。

示例

n98-magerun2.phar config:env:show  # whole content
n98-magerun2.phar config:env:show backend.frontName
n98-magerun2.phar config:env:show --format=json
n98-magerun2.phar config:env:show --format=csv
n98-magerun2.phar config:env:show --format=xml

配置搜索

在商店配置元数据(标签)中搜索。输出是一个包含配置项 id、类型和名称的表格。

类型可以是以下之一

  • 部分
  • 字段
n98-magerun2.phar config:search [--format[="..."]] <search>

设置商店配置

n98-magerun2.phar config:store:set [--scope[="..."]] [--scope-id[="..."]] [--encrypt] path value

参数

  • path - 配置路径值 配置值

选项

获取商店配置

n98-magerun2.phar config:store:get [--scope="..."] [--scope-id="..."] [--decrypt] [--format[="..."]] [path]

参数

  • path - 配置路径

选项

帮助

如果没有设置路径,将列出所有可用的配置项。路径可能包含通配符 (*)

示例

n98-magerun2.phar config:store:get web/* --magerun-script

删除商店配置

n98-magerun2.phar config:store:delete [--scope[="..."]] [--scope-id[="..."]] [--all] path

参数

  • path - 配置路径

选项

显示 ACL 树

n98-magerun2.phar config:data:acl

帮助

将 acl.xml 数据打印为表格

打印依赖注入配置数据

n98-magerun2.phar config:data:di <type>

参数

  • type - 类型(类)

选项

打印 MView 配置

打印所有合并的 mview.xml 文件的数据。

n98-magerun2.phar config:data:mview [options]

选项

打印索引器配置

打印所有合并的 indexer.xml 文件的数据。

n98-magerun2.phar config:data:indexer [options]

选项

列出 Magento 缓存状态

n98-magerun2.phar cache:list

清理 Magento 缓存

清理过期的缓存条目。

如果您只想清理一个缓存类型

n98-magerun2.phar cache:clean [code]

如果您想一次性清理多个缓存类型

n98-magerun2.phar cache:clean [code] [code] ...

如果您想删除所有缓存条目,请使用 cache:flush

运行 cache:list 命令以查看所有代码。

删除所有缓存条目

n98-magerun2.phar cache:flush [code]

请注意,cache:flush 清除缓存后端,因此同一后端中的其他缓存类型也将被清除。

通过 ID 删除条目

该命令不会检查缓存 ID 是否存在。如果您想检查缓存 ID 是否存在,请使用带 --strict 选项的 cache:remove:id 命令。

n98-magerun2.phar cache:remove:id [options[--strict] <id>

列出 Magento 缓存

n98-magerun2.phar cache:list [--format[="..."]]

禁用 Magento 缓存

n98-magerun2.phar cache:disable [code]

如果没有指定代码,则将禁用所有缓存类型。运行 cache:list 命令以查看所有代码。

启用 Magento 缓存

n98-magerun2.phar cache:enable [code]

缓存报告

此命令可让您调查您的缓存中存储的内容。它打印出一个包含缓存 ID 的表格。

n98-magerun2.phar cache:report [-t|--tags] [-m|--mtime] [--filter-id[="..."]] [--filter-tag[="..."]] [--fpc]

缓存查看

通过 ID 打印存储的缓存条目。

n98-magerun2.phar cache:view [--unserialize] [--decrypt] [--fpc] id

如果值已序列化,则可以使用 --unserialize 选项强制进行美观的输出。某些条目是加密的,可以使用 --decrypt 选项解密。该命令默认使用核心缓存。如果应使用 FPC 缓存,则可以使用 --fpc 选项。

刷新目录图像缓存

删除预生成的目录图像并触发 clean_catalog_images_cache_after 事件,该事件应使完整页面缓存无效。

n98-magerun2.phar cache:catalog:image:flush

如果没有指定代码,将启用所有缓存类型。运行cache:list命令查看所有代码。

列出管理员用户

n98-magerun2.phar admin:user:list [--format[="..."]]

更改管理员用户密码

n98-magerun2.phar admin:user:change-password [username] [password]

删除管理员用户

n98-magerun2.phar admin:user:delete [email|username] [-f]

ID可以是电子邮件或用户名。命令将首先尝试通过用户名查找用户,如果找不到,将尝试通过电子邮件查找。如果省略ID,您将被提示输入。如果省略强制参数-f,您将被提示确认。

为Webapi创建管理员令牌

n98-magerun2.phar admin:token:create <username>

运行原始数据库查询

n98-magerun2.phar db:query <sql-query>

示例

n98-magerun2.phar db:query "select * from store"

打开MySQL控制台

n98-magerun2.phar db:console [options]

选项

转储数据库

使用mysqldump转储配置的Magento数据库。

  • 需要MySQL CLI工具

参数

  • filename - 转储文件名

选项

n98-magerun2.phar db:dump

只有mysqldump命令

n98-magerun2.phar db:dump --only-command [filename]

或直接输出到stdout

n98-magerun2.phar db:dump --stdout

使用压缩(需要安装gzip CLI工具)

n98-magerun2.phar db:dump --compression="gzip"

剥离数据库转储

转储您的数据库并排除一些表。这在开发或测试环境中很有用,在这些环境中,您可能希望提供一个受限的数据库。

使用空格分隔要剥离的每个表。您可以在表名中使用通配符如*?来剥离多个表。此外,您还可以指定以@符号开始的预定义表组。

示例:dataflow_batch_export unimportant_module_* @log

n98-magerun2.phar db:dump --strip="@stripped"

可用表组

导入数据库

  • 需要MySQL CLI工具

参数

  • filename - 转储文件名

选项

n98-magerun2.phar db:import

修复空授权表

如果您使用带有剥离选项和@admin组的db:dump运行,则authorization_rule和authorization_role表将为空。这将阻止创建管理员用户。

您可以通过运行命令重新创建默认条目

n98-magerun2.phar db:add-default-authorization-entries

如果您正在使用db:import命令导入剥离的SQL转储,则将隐式调用此命令。

清除静态视图文件

n98-magerun2.phar dev:asset:clear [--theme="..."]

选项

清除所有主题的资产

n98-magerun2.phar dev:asset:clear

仅清除特定主题的资产

n98-magerun2.phar dev:asset:clear --theme=Magento/luma

列出主题

n98-magerun2.phar dev:theme:list

创建模块骨架

创建一个空模块并将其注册到当前Magento商店。

n98-magerun2.phar dev:module:create [-m|--minimal] [--add-blocks] [--add-helpers] [--add-models] [--add-setup] [--add-all] [-e|--enable] [--modman] [--add-readme] [--add-composer] [--add-strict-types] [--author-name [AUTHOR-NAME]] [--author-email [AUTHOR-EMAIL]] [--description [DESCRIPTION]] [-h|--help] [-q|--quiet] [-v|vv|vvv|--verbose] [-V|--version] [--ansi] [--no-ansi] [-n|--no-interaction] [--root-dir [ROOT-DIR]] [--skip-config] [--skip-root-check] [--skip-core-commands [SKIP-CORE-COMMANDS]] [--skip-magento-compatibility-check] [--] <command> <vendorNamespace> <moduleName>

检测模块中的Composer依赖关系

可以扫描一个或多个模块的源代码以查找依赖关系。

n98-magerun2.phar dev:module:detect-composer-dependencies [--only-missing] <directory>

--only-missing选项将过滤输出,以便仅列出缺失的依赖关系。

为Magento Admin启用/禁用内联翻译功能

n98-magerun2.phar dev:translate:admin [--on] [--off]

为商店前端启用/禁用内联翻译功能

n98-magerun2.phar dev:translate:shop [--on] [--off] <store>

设置翻译(保存在翻译表中)

n98-magerun2.phar dev:translate:set <string> <translate> [<store>]

导出内联翻译

n98-magerun2.phar dev:translate:export [--store=<storecode>] <locale> <filename>

列出模块

n98-magerun2.phar dev:module:list [--vendor [VENDOR]] [-e|--only-enabled] [-d|--only-disabled] [--format [FORMAT]]

列出所有已安装的模块。如果设置了--vendor选项,则仅列出给定供应商的模块。如果设置了--only-enabled选项,则仅列出启用的模块。如果设置了--only-disabled选项,则仅列出禁用的模块。格式可以是csvjsonxmlyaml

加密

使用Magentos加密密钥加密给定的字符串

n98-magerun2.phar dev:encrypt <string>

使用Magentos加密密钥解密给定的字符串

n98-magerun2.phar dev:decrypt <encrypted string>

列出观察者

n98-magerun2.phar dev:module:observer:list [--sort] <event> [<area>

列出路由

n98-magerun2.phar route:list [-a|--area] [-m|--module] [-f|--format]

EAV属性

查看特定属性的详细信息

n98-magerun2.phar eav:attribute:view [--format[="..."]] entityType attributeCode

生成礼品卡池

生成新的礼品卡池。

n98-magerun2.phar giftcard:pool:generate

创建礼品卡

n98-magerun2.phar giftcard:create [--website[="..."]] [--expires[="..."]] [amount]

您可以指定网站ID或使用默认值。您还可以使用--expires选项可选地添加礼品卡的过期日期。日期应采用YYYY-MM-DD格式。

查看礼品卡信息

n98-magerun2.phar giftcard:info [--format[="..."]] [code]

删除礼品卡

n98-magerun2.phar giftcard:remove [code]

比较设置版本

比较模块版本与setup_module表中保存的设置版本,如果找到不匹配,则显示版本不匹配。

n98-magerun2.phar sys:setup:compare-versions [--ignore-data] [--log-junit="..."] [--format[="..."]]
  • 如果设置了带有--log-junit选项的文件名,则工具将生成XML文件,而不会输出到stdout

更改设置版本

更改模块的版本。此命令在您想再次运行升级脚本以进行调试时很有用。或者,您可能需要手动更改数据库中的行。

n98-magerun2.phar sys:setup:change-version module version

降级设置版本

如果需要,将数据库中的版本降级到模块XML文件中的模块版本。这在开发期间在模块版本更改之间切换分支时很有用。

n98-magerun2.phar sys:setup:downgrade-versions

转储媒体文件夹

创建一个包含媒体文件夹内容的ZIP存档。

n98-magerun2.phar media:dump [--strip] [filename]

集成(Webapi访问令牌)

有四个命令用于创建、显示、列出、删除集成(访问令牌)。这些命令对于开发者来说非常有用。

列出所有现有集成

n98-magerun2.phar integration:list

创建一个新的集成

n98-magerun2.phar integration:create [options] [--] <name> [<email> [<endpoint>]]

选项

如果没有定义ACL资源,新集成令牌将被创建为具有完全访问权限。

如果您不希望这样,请使用--resource选项提供ACL资源的列表。

示例

n98-magerun2.phar integration:create "My new integration 10" foo@example.com https://example.com -r Magento_Catalog::catalog_inventory -r Magento_Backend::system_other_settings

要查看所有可用的ACL资源,请运行命令config:data:acl

显示现有集成的信息

n98-magerun2.phar integration:show --format[=FORMAT] <name_or_id> [key]

示例(仅打印访问密钥)

n98-magerun2.phar integration:show 1 "Access Key"

删除集成

n98-magerun2.phar integration:delete <name_or_id>

Github

(实验性)命令

拉取请求

获取关于Github拉取请求的信息。如果没有通过---repository(-r)选项定义Github仓库,将使用默认的Magento 2 Github仓库magento/magento2。对于Mage-OS仓库,我们提供了快捷选项--mage-os

如果命令在没有任何选项的情况下执行,它将显示有关PR的信息。

# Magento 2 Open Source
n98-magerun2.phar github:pr:patch <pr-number>

# Mage-OS
n98-magerun2.phar github:pr:patch --mage-os <pr-number>

从PR创建补丁文件

n98-magerun2.phar github:pr:patch --patch <pr-number>

目前该命令不处理magento2-base、magento2-ee-base和b2b基础包的文件。

仅列出原始差异

n98-magerun2.phar github:pr:patch --diff <pr-number>

交互式开发控制台

以初始化的Magento Admin-Store打开PHP交互式shell。

n98-magerun2.phar dev:console [--area=AREA] <arg>

可选地,可以定义一个区域代码。如果提供,将加载该区域的配置(di.xml、翻译)。

可能的区域代码有

  • adminhtml
  • crontab
  • frontend
  • graphql
  • webapi_xml
  • webapi_rest

变量$di通过Magento\Framework\ObjectManagerInterface实例提供,允许创建对象实例。

变量$dh提供方便的调试函数。键入$dh->并按Tab键以获取列表。

示例

n98-magerun2 dev:console --area=adminhtml
    // show name of category 123 in default store
    $dh->debugCategoryById(123)['name']; 
    // show name of product id 123
    $dh->debugProductById(123)['name']; 

交互式控制台作为REPL工作。可以输入任何PHP代码。代码将被立即执行。交互式控制台还提供了许多内置的s命令。

可以向交互式控制台添加初始命令。命令应由分号分隔。可以将PHP代码与嵌入的交互式控制台命令混合使用。

示例

n98-magerun2.phar dev:console "$a = 1; call cache:flush; ls;"

交互式控制台带有可扩展的代码生成工具,可以创建例如模块、cli命令、控制器、块、助手等。

控制台可以处于模块上下文中,这允许您为所选模块生成代码。

有状态控制台的基本思想是由Jacques Bodin-Hullin在这个伟大的工具Installer中开发的。

n98-magerun脚本

从脚本文件中运行多个命令。

n98-magerun2.phar script [-d|--define[="..."]] [--stop-on-error] [filename]

示例

# Set multiple config
config:store:set "web/cookie/cookie_domain" example.com

# Set with multiline values with `\n`
config:store:set "general/store_information/address" "First line\nSecond line\nThird line"

# This is a comment
cache:flush

可选地,您可以使用Unix管道。

echo "cache:flush" | n98-magerun2.phar script
n98-magerun2.phar script < filename

甚至可以创建可执行脚本

创建文件test.magerun并将其设置为可执行chmod +x test.magerun

#!/usr/bin/env n98-magerun2.phar script

config:store:set "web/cookie/cookie_domain" example.com
cache:flush

# Run a shell script with "!" as first char
! ls -l

# Register your own variable (only key = value currently supported)
${my.var}=bar

# Let magerun ask for variable value - add a question mark
${my.var}=?

! echo ${my.var}

# Use resolved variables from n98-magerun in shell commands
! ls -l ${magento.root}/code/local

预定义变量

可以使用“--define (-d)”选项将变量传递到脚本中。

示例

n98-magerun2.phar script -d foo=bar filename

# This will register the variable ${foo} with value bar.

可以通过传递多个选项来定义多个值。

可以在脚本中使用环境变量,方法是在变量前使用env.前缀。

示例

!echo "My current working directory is: ${env.PWD}"
!echo "Path: ${env.PATH}"

切换CMS块状态

根据给定的块标识符切换CMS块的状态。

n98-magerun2.phar cms:block:toggle [blockId]

更改管理员用户状态

根据选项更改管理员用户,如果没有提供选项,则命令将切换状态。

n98-magerun2.phar admin:user:change-status [user] [--activate] [--deactivate]

注意:用户可能存在与不同用户电子邮件匹配的用户名。在这种情况下,将更改第一个匹配的用户。

为特定商店添加销售序列

如果数据库中缺少销售序列,将在数据库中创建销售序列,这将重新创建配置文件。

n98-magerun2.phar sales:sequence:add [store] 

如果省略了商店,它将为所有商店运行。

注意:可能已存在一个序列,在这种情况下不会发生任何事,只会创建缺失的表。

移除指定店铺的销售序列

从数据库中移除销售序列,警告:您不能撤销此操作,请确保您有数据库备份。

n98-magerun2.phar sales:sequence:remove [store] 

如果省略了店铺,它将为所有店铺运行。当提供了no-interaction选项时,它将立即运行而无需任何交互。否则,它将提醒您并询问您是否了解自己在做什么,并询问您要运行的每个店铺。

注意:

脚本仓库

您可以在仓库中组织您的脚本。只需将脚本放在文件夹/usr/local/share/n98-magerun2/scripts或您的家目录中的文件夹<HOME>/.n98-magerun2/scripts即可。

脚本必须有.magerun文件扩展名。

之后,您可以使用script:repo:list命令列出所有脚本。脚本的第1行可以包含注释(以#开头的行),它将显示为描述。

n98-magerun2.phar script:repo:list [--format[="..."]]

如果您想从仓库中执行脚本,可以使用script:repo:run命令。

n98-magerun2.phar script:repo:run [-d|--define[="..."]] [--stop-on-error] [script]

脚本参数是可选的。如果您没有指定任何参数,您可以从列表中选择一个。

Composer重新部署基本包

在 Magento 更新后如果文件缺失,可能是因为新文件被添加到了 Magento 基本包中的文件映射。composer:redeploy-base-packages命令可以解决这个问题。

n98-magerun2.phar composer:redeploy-base-packages

开发

https://github.com/netz98/n98-magerun2/wiki