是否可以通过drush eval在模块的.inc文件内调用函数?


12

我有一个包含其他(.inc)文件的模块,该文件包含我需要通过Drush运行的功能。我知道可以运行drush eval,但是当我尝试为这些功能运行时,出现以下错误:

PHP致命错误:调用/usr/share/php/drush/commands/core/core.drush.inc(1037)中未定义的函数my_module_my_function():第1行上的eval()代码

此命令有效(该功能在.module文件中)。

drush eval 'my_module_cron();'

该命令不起作用(该功能在.inc文件中)。

drush eval 'my_module_my_function();'

除了在模块中移动功能之外,还有其他解决方法吗?


模块文件中包含/需要您的inc文件吗?或您的.info文件中?只要drupal知道.info文件中的inc文件或您的.module文件中包含/需要该文件,这就应该起作用。
蜜蜂

Answers:


18

您可以像其他任何地方一样将module_load_include()添加到评估代码中。

像这样:

drush eval "module_load_include('inc', 'my_module', 'INCLUDE_FILE_NAME_WITHOUT_EXTENSION'); my_module_my_function();"

也适用于.install文件,例如:drush eval "module_load_include('install', 'my_module', 'my_module); my_module_install();"
tanius

这对我不起作用。Division by zero core.drush.inc(1168) : eval()'d code:1打电话时我得到module_load_include
mbomb007 '18

@ mbomb007:您正在使用哪个版本的drush,并且正在运行的命令是什么?
rooby

没关系。我在内部和外部都使用相同类型的引号。drush eval 'module_load_include('...
mbomb007 '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.