Php TYPO3调度器什么也不做

Php TYPO3调度器什么也不做,php,cron,scheduler,typo3-7.6.x,Php,Cron,Scheduler,Typo3 7.6.x,我已经编写了一个调度任务。我的机器运转良好。不幸的是,它不能在我的远程机器上工作 这台机器是一台运行php7.0 php fpm的freeBSD。 cron看起来像: **MAILTO=mail@falk-roeder.de @weekly /usr/local/bin/letsencrypt.sh -c * * * * * php /var/www/alpha/beta/gamma/typo3/cli_dispatch.phpsh scheduler #* * * * * php -r 'ec

我已经编写了一个调度任务。我的机器运转良好。不幸的是,它不能在我的远程机器上工作

这台机器是一台运行php7.0 php fpm的freeBSD。 cron看起来像:

**MAILTO=mail@falk-roeder.de
@weekly /usr/local/bin/letsencrypt.sh -c
* * * * * php /var/www/alpha/beta/gamma/typo3/cli_dispatch.phpsh scheduler
#* * * * * php -r 'echo function_exists("foo") ? "yes" : "no";'
最后一个crontab被执行(如果我对它进行了注释)并将邮件输出发送给我

如果我用一些奇怪的东西替换“scheduler”,我还会收到一封带有输出的邮件,其中包含我应该选择的有效选项。 对我来说,这意味着cron正在运行,cli_dispatch.phpsh被正确调用

在TYPO3后端中,调度程序表示配置正常。我可以手动启动cron并让它完成工作

那么,还有什么其他原因

编辑

我发现原因是,TYPO3调度程序没有请求正确的数据库。我有一个额外的配置文件,其中$GLOBALS['TYPO3\u CONF\u VARS']['DB']['database']中的数据库名称是基于变量$\u SERVER['SERVER\u name']更改的。但在调度程序中,此变量为空。所以我不得不删除额外的配置文件,一切都正常工作


现在的问题是,,如何实现调度器基于服务器名获取正确的数据库?

与其检查服务器变量,不如在调用调度器时使用也可以设置的应用程序上下文

与其检查服务器变量,不如在调用调度器时使用也可以设置的应用程序上下文

对于其他更完整的答案:

在.htaccess中,您可以根据您的主机名设置站点的应用程序上下文

例如:

# Rules to set ApplicationContext based on hostname
RewriteCond %{HTTP_HOST} ^dev\.example\.de$
RewriteRule .? - [E=TYPO3_CONTEXT:Development]
RewriteCond %{HTTP_HOST} ^alpha\.example\.de$
RewriteRule .? - [E=TYPO3_CONTEXT:Production/Staging]
RewriteCond %{HTTP_HOST} ^www\.example\.de$
RewriteRule .? - [E=TYPO3_CONTEXT:Production]
在AdditionalConfiguration.php中,您可以基于此上下文设置DB。 例如:

}

在cron选项卡中(在命令行上使用crontab-e进行编辑),在调用cliscript之前设置Envroiment变量

例如:

* * * * * TYPO3_CONTEXT=Production/Staging php /var/www/alpha/beta/gamma/typo3/cli_dispatch.phpsh scheduler

对于其他更完整的答案:

在.htaccess中,您可以根据您的主机名设置站点的应用程序上下文

例如:

# Rules to set ApplicationContext based on hostname
RewriteCond %{HTTP_HOST} ^dev\.example\.de$
RewriteRule .? - [E=TYPO3_CONTEXT:Development]
RewriteCond %{HTTP_HOST} ^alpha\.example\.de$
RewriteRule .? - [E=TYPO3_CONTEXT:Production/Staging]
RewriteCond %{HTTP_HOST} ^www\.example\.de$
RewriteRule .? - [E=TYPO3_CONTEXT:Production]
在AdditionalConfiguration.php中,您可以基于此上下文设置DB。 例如:

}

在cron选项卡中(在命令行上使用crontab-e进行编辑),在调用cliscript之前设置Envroiment变量

例如:

* * * * * TYPO3_CONTEXT=Production/Staging php /var/www/alpha/beta/gamma/typo3/cli_dispatch.phpsh scheduler

丹克。这是最好的。重要的一点是:上下文测试只能用于测试、单元测试和功能测试。在QS这样的环境中使用开发或生产(如生产/测试)的子上下文!重要的一点是:上下文测试只能用于测试、单元测试和功能测试。在QS这样的环境中使用开发或生产(如生产/测试)的子上下文!