我正在尝试在这样的命令操作中访问我网站的基本网址:
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:///
在此上下文中获取域的正确方法是什么?
答案 0 :(得分:1)
PHP从服务器调用中知道域。如果您的站点位于特定服务器上,则可能有多个URL指向此服务器。您的PHP本身并不知道他拥有哪个域。只有用户正在执行PHP的请求才能在Typo3 / Extbase可以读取的$ _SERVER-var中获取此信息。我假设你的脚本在不同的服务器上运行,如果你想获取网址?您是否可以在服务器上为每个服务器添加不同的配置?
执行此操作的一种方法是存储用户调用的url并在后台模块中阅读。
答案 1 :(得分:0)
说清楚:如果你自动运行调度程序并因此在CLI模式下触发PHP,则没有请求URL /它是空的,就像名称已经建议你在命令行界面模式下运行一样。
Typoscript具有baseURL可设置和可切换,但即使在那里调用的域是未定义的,这是完全正确的。