grossberger-georg / run-script
通过后端运行服务器端脚本
Requires
- php: ^8.1
- typo3/cms-backend: ^12.4
- typo3/cms-core: ^12.4
- typo3/cms-extbase: ^12.4
- typo3/cms-fluid: ^12.4
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.3
- mikey179/vfsstream: ^1.6
- phpunit/phpunit: ^9.5
README
这是一个TYPO3扩展,允许编辑器通过后端界面运行配置的服务器端脚本。它将在后端工具栏中添加一个下拉菜单,以便选择要运行的脚本。
安装
使用composer将扩展作为依赖项添加: composer require grossberger-georg/run-script
。
配置
重要:Web服务器必须安装并可供运行PHP进程的用户使用nohup和bash,且在$PATH变量中可用。
创建脚本
执行脚本将更改其工作目录到项目的根路径,并在执行前导出所有可用环境变量。例如:在一个默认选项的composer模式安装中,脚本 ./vendor/bin/typo3 scheduler:run
将启动调度器。
脚本不会被转义、引号或以任何其他方式更改。它将按原样执行。
任何有效的bash命令都是有效的脚本,因此这也被允许: if [[ ! -f /tmp/hello ]]; then echo Hello > /tmp/hello; sleep 200; rm /tmp/hello; fi
如果脚本指向一个文件,请确保它设置了可执行位。
如果是文件并且有EXT:前缀,它将被解析为绝对路径。EXT:前缀在中间将不会被解析。脚本 EXT:shop/Resources/Private/Scripts/import.sh
将工作,但 if [[ ! -f /tmp/importing ]]; then EXT:shop/Resources/Private/Scripts/import.sh; fi;
将不会。
一次只能运行一个脚本实例。EXT:run_script将创建一个锁,并在已有进程运行该脚本时通知用户。
设置要运行的脚本
脚本由两部分组成:一个键以及一个包含至少两个条目的数组:一个名称和要执行的bash命令。它们被添加到全局TYPO3_CONF_VARS中。
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['run_script']['<KEY>'] = [ 'label' => '<LABEL>', 'script' => '<SCRIPT>', ];
使用扩展的ext_localconf.php或AdditionalConfiguration.php文件添加脚本。包含一个简单的演示,可以通过在扩展设置中启用“启用演示脚本”选项来激活。
键应遵循TYPO3约定tx_myext_function。
在数组内部,以下选项可用
如果提供了reloadBackend
,该数字是在脚本完成后,后台重新加载后的秒数。这对于脚本更改后端可见数据很有用,如产品导入器。
权限
默认情况下,管理员可以看到所有脚本。这可以通过扩展设置中的选项“禁用管理员始终访问”来禁用。然后必须通过TSConfig设置授权访问,如编辑器。
编辑器只能执行TSConfig键tx_runscript.allowed
中逗号分隔的列表中的脚本。配置数组的键必须在这个列表中,脚本才能执行。
示例
# Always allow those two:
tx_runscript.allowed = tx_shop_import_products, tx_shop_export_orders
# Editors with Backend Group 3 can also run this one:
[like(","~backend.user.userGroupList~",", "*,3,*")]
tx_runscript.allowed := addToList(tx_shop_clean_expired_carts)
[global]
许可证
MIT许可证,请参阅LICENSE或https://open-source.org.cn/licenses/MIT
图标来自 Bootstrap Icons,该图标库采用 MIT 许可。
TYPO3 采用 GNU/GPL 许可发布。请参阅 https://github.com/TYPO3/TYPO3.CMS/blob/master/LICENSE.txt 了解详情