getThreadFromUrl fails when executed from CLI


Well-known member
Affected version
The failure of \XF\Repository\Thread::getThreadFromUrl function when executed from the CLI is due to the \XF\Request not being in the expected state.

getThreadFromUrl eventually calls \XF\Request::getHost which returns false, which results in the routeToController method not getting the data it expects and thus failing to match
	public function getThreadFromUrl($url, $type = null, &$error = null)
		$routePath = $this->app()->request()->getRoutePathFromUrl($url, true);
	public function getHost()
		$host = $this->getServer('HTTP_HOST');
		if (!$host)
			$host = $this->getServer('SERVER_NAME');
			$port = intval($this->getServer('SERVER_PORT'));
			if ($port && $port != 80 && $port != 443)
				$host .= ":$port";

		return $host;

From the CLI context, both HTTP_HOST and SERVER_NAME aren't set.

A workaround would be something $host = parse_url($app->options()->boardUrl, PHP_URL_HOST) and storing it into $_SERVER['HTTP_HOST'] (well \XF\Request::$server) when the server variables that are expected don't exist.
Top Bottom