Typo3 Extbase: получить домен в CommandController

Я пытаюсь получить доступ к базовому URL-адресу своего сайта внутри такого командного действия:

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" );
    }

}

Когда я запускаю команду из внутреннего модуля планировщика, домен выглядит нормально, но когда он запускается автоматически, результат такой:

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

Каков правильный способ получить домен в этом контексте?


person cili    schedule 10.03.2014    source источник


Ответы (2)


PHP знает домен из вызова сервера. Если ваш сайт находится на определенном сервере, у вас может быть несколько URL-адресов, указывающих на этот сервер. Ваш PHP сам не знает, какой у него домен. Только из запроса, который делает пользователь, PHP получает эту информацию в $_SERVER-var, которую Typo3/Extbase может прочитать. Я предполагаю, что ваш скрипт работает на разных серверах, если вы хотите получить URL-адрес? Можете ли вы поставить на сервер конфигурацию, которая отличается для каждого сервера?

Одним из способов сделать это было бы сохранить URL-адрес пользовательского вызова и прочитать его в вашем фоновом модуле.

person Christian    schedule 12.03.2014
comment
Спасибо, Кристиан, предложенный вами подход - это тот, который я использовал. Я передал URL-адрес в качестве параметра запланированному действию задачи. - person cili; 12.03.2014

чтобы было ясно: если вы запускаете планировщик автоматически и, следовательно, запускаете PHP в режиме CLI, URL-адрес запроса отсутствует / он пуст, как уже предполагает название, вы работаете в режиме интерфейса командной строки.

Typoscript имеет настраиваемый и переключаемый базовый URL, но даже здесь домен вызова не определен, что совершенно правильно.

person frank    schedule 10.05.2014