Typo3 Extbase:在CommandController中获取域名

时间:2014-03-10 14:37:17

标签: dns controller command typo3 extbase

我正在尝试在这样的命令操作中访问我网站的基本网址:

namespace Vendor\TxTest\Command;

class TestCommandController extends \TYPO3\CMS\Extbase\Mvc\Controller\CommandController
{
    /**
     * logger 
     * 
     * @var \TYPO3\CMS\Core\Log\LogManager
     */
    protected $logger;

    /**
     * Class constructor
     */
    public function __construct()
    {
        $this->logger = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance( 'TYPO3\\CMS\\Core\\Log\\LogManager' )->getLogger( __CLASS__ );
    }

    /**
     * Test command
     */
    public function testCommand()
    {
        $homeUrl = \TYPO3\CMS\Core\Utility\GeneralUtility::locationHeaderUrl( '/' );

        $this->logger->info( 'url: ' . $homeUrl );

        $this->logger->info( "\n\r\n\r" );
    }

}

当我从Scheduler后端模块运行命令时,域看起来没问题,但是当它自动运行时,结果是:

Mon, 10 Mar 2014 ... component="Vendor.TxNews.Command.TestCommandController": url: http:///

在此上下文中获取域的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

PHP从服务器调用中知道域。如果您的站点位于特定服务器上,则可能有多个URL指向此服务器。您的PHP本身并不知道他拥有哪个域。只有用户正在执行PHP的请求才能在Typo3 / Extbase可以读取的$ _SERVER-var中获取此信息。我假设你的脚本在不同的服务器上运行,如果你想获取网址?您是否可以在服务器上为每个服务器添加不同的配置?

执行此操作的一种方法是存储用户调用的url并在后台模块中阅读。

答案 1 :(得分:0)

说清楚:如果你自动运行调度程序并因此在CLI模式下触发PHP,则没有请求URL /它是空的,就像名称已经建议你在命令行界面模式下运行一样。

Typoscript具有baseURL可设置和可切换,但即使在那里调用的域是未定义的,这是完全正确的。