Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
StorefrontAnalyzer.php
Go to the documentation of this file.
1 <?php
8 
9 use Magento\Mtf\ObjectManagerInterface;
11 use Magento\Mtf\Util\Protocol\CurlInterface;
13 use Symfony\Component\Console\Input\InputInterface;
14 use Symfony\Component\Console\Output\OutputInterface;
15 
19 class StorefrontAnalyzer extends \Symfony\Component\Console\Command\Command
20 {
26  private $curlTransport;
27 
33  private $objectManager;
34 
40  private $urlAnalyzer;
41 
47  public function __construct(
48  ObjectManagerInterface $objectManager,
49  UrlAnalyzer $urlAnalyzer,
50  CurlTransport $curlTransport
51  ) {
52  parent::__construct();
53  $this->objectManager = $objectManager;
54  $this->urlAnalyzer = $urlAnalyzer;
55  $this->curlTransport = $curlTransport;
56  }
57 
63  protected function configure()
64  {
65  parent::configure();
66  $this->setName('troubleshooting:check-magento-storefront')
67  ->setDescription('Check that app_frontend_url config is correct and Magento installed.');
68  }
69 
78  protected function execute(InputInterface $input, OutputInterface $output)
79  {
80  \PHPUnit\Util\Configuration::getInstance(MTF_PHPUNIT_FILE)->handlePHPConfiguration();
81  $output = $this->objectManager->create(
82  \Magento\Mtf\Console\Output::class,
83  ['output' => $output]
84  );
85  $output->writeln("Verifying Magento Storefront...");
86  $storefrontUrlAnalyzerMessages = $this->runStorefrontUrlAnalyzer();
87  if (isset($storefrontUrlAnalyzerMessages['error']) === false) {
88  $output->outputMessages($this->urlAnalyzer->fixLastSlash('app_frontend_url'));
89  $output->outputMessages($this->urlAnalyzer->checkDomain($_ENV['app_frontend_url']));
90  } else {
91  $output->outputMessages($storefrontUrlAnalyzerMessages);
92  }
93  $output->writeln("Storefront verification finished.");
94  }
95 
101  private function runStorefrontUrlAnalyzer()
102  {
103  $messages = [];
104  if (!isset($_ENV['app_frontend_url'])) {
105  $messages['error'][] = 'app_frontend_url parameter is absent in the phpunit.xml file. '
106  . 'Please, copy file from phpunit.xml.dist.';
107  return $messages;
108  }
109  $url = $_ENV['app_frontend_url'];
110  try {
111  $this->curlTransport->write($url, [], CurlInterface::GET);
112  $response = $this->curlTransport->read();
113  if (strpos($response, 'Home Page') === false) {
114  $messages['error'][] = 'Magento seems not installed. Check your Magento instance.';
115  }
116  } catch (\Exception $e) {
117  $messages['error'][] = $e->getMessage();
118  }
119  $this->curlTransport->close();
120 
121  return $messages;
122  }
123 }
$response
Definition: 404.php:11
$objectManager
Definition: bootstrap.php:17
execute(InputInterface $input, OutputInterface $output)
__construct(ObjectManagerInterface $objectManager, UrlAnalyzer $urlAnalyzer, CurlTransport $curlTransport)