Place Magento 2 driver in:
~/.config/valet/Drivers/CustomMagento2ValetDriver.php
It's copied from Valet+.
<?php | |
// Copied from https://github.com/weprovide/valet-plus/blob/2.x/cli/drivers/Magento2ValetDriver.php | |
class CustomMagento2ValetDriver extends Magento2ValetDriver | |
{ | |
/** | |
* Determine if the driver serves the request. | |
* | |
* @param string $sitePath | |
* @param string $siteName | |
* @param string $uri | |
* @return bool | |
*/ | |
public function serves($sitePath, $siteName, $uri) | |
{ | |
return file_exists($sitePath . '/pub/index.php') && | |
file_exists($sitePath . '/bin/magento'); | |
} | |
public function envExists($sitePath) | |
{ | |
return file_exists($sitePath.'/app/etc/env.php'); | |
} | |
public function moduleConfigExists($sitePath) | |
{ | |
return file_exists($sitePath.'/app/etc/config.php'); | |
} | |
public function installed($sitePath) | |
{ | |
return $this->envExists($sitePath) && $this->moduleConfigExists($sitePath); | |
} | |
/** | |
* Determine if the incoming request is for a static file. | |
* | |
* @param string $sitePath | |
* @param string $siteName | |
* @param string $uri | |
* @return string|false | |
*/ | |
public function isStaticFile($sitePath, $siteName, $uri) | |
{ | |
$this->loadServerEnvironmentVariables($sitePath, $siteName); | |
$isMagentoStatic = false; | |
$resource = $uri; | |
if (strpos($uri, '/errors') === 0 && file_exists($sitePath.'/pub'.$uri)) { | |
return $sitePath.'/pub'.$uri; | |
} | |
if (strpos($uri, '/pub') === 0 && file_exists($sitePath.'/setup'.$uri)) { | |
return $sitePath.'/setup'.$uri; | |
} | |
if (strpos($uri, '/static/') !== false) { | |
$isMagentoStatic = true; | |
} | |
if (!$isMagentoStatic && strpos($uri, '/media/') === false) { | |
return false; | |
} | |
if ($isMagentoStatic) { | |
$resource = preg_replace('#static(/version[0-9]+)?/#', '', $uri, 1); | |
$uri = '/static' . $resource; | |
} | |
if (strpos($uri, '/js-translation.json') !== false) { | |
header('Cache-Control: no-store, must-revalidate'); | |
} | |
if (file_exists($staticFilePath = $sitePath . '/pub' . $uri)) { | |
return $staticFilePath; | |
} | |
if (strpos($uri, '/static/') === 0) { | |
$_GET['resource'] = $resource; | |
include($sitePath . DIRECTORY_SEPARATOR . 'pub' . DIRECTORY_SEPARATOR . 'static.php'); | |
exit; | |
} | |
if (strpos($uri, '/media/') === 0) { | |
include($sitePath . DIRECTORY_SEPARATOR . 'pub' . DIRECTORY_SEPARATOR . 'get.php'); | |
exit; | |
} | |
return false; | |
} | |
/** | |
* Get the fully resolved path to the application's front controller. | |
* | |
* @param string $sitePath | |
* @param string $siteName | |
* @param string $uri | |
* @return string | |
*/ | |
public function frontControllerPath($sitePath, $siteName, $uri) | |
{ | |
$this->loadServerEnvironmentVariables($sitePath, $siteName); | |
$_SERVER['SERVER_NAME'] = $_SERVER['HTTP_HOST']; | |
if (isset($_GET['profile'])) { | |
$_SERVER['MAGE_PROFILER'] = 'html'; | |
} | |
if (strpos($uri, '/errors') === 0) { | |
$file = $sitePath . '/pub' . $uri; | |
if (file_exists($file)) { | |
return $file; | |
} | |
return $sitePath . '/pub/errors/404.php'; | |
} | |
if ($uri === '/setup') { | |
Header('HTTP/1.1 301 Moved Permanently'); | |
Header('Location: http://' . $_SERVER['HTTP_HOST'] . $uri . '/'); | |
die; | |
} | |
if (strpos($uri, '/setup') === 0) { | |
$_SERVER['SCRIPT_FILENAME'] = $sitePath.'/setup/index.php'; | |
$_SERVER['SCRIPT_NAME'] = '/index.php'; | |
$_SERVER['DOCUMENT_ROOT'] = $sitePath.'/setup/'; | |
$_SERVER['REQUEST_URI'] = str_replace('/setup', '', $_SERVER['REQUEST_URI']); | |
if ($_SERVER['REQUEST_URI'] === '') { | |
$_SERVER['REQUEST_URI'] = '/'; | |
} | |
return $sitePath.'/setup/index.php'; | |
} | |
if (!$this->installed($sitePath)) { | |
http_response_code(404); | |
require __DIR__.'/../templates/magento2.php'; | |
exit; | |
} | |
if (strpos($uri, '/dev/tests/acceptance/utils/command.php') !== false) { | |
return $sitePath . '/dev/tests/acceptance/utils/command.php'; | |
} | |
$_SERVER['DOCUMENT_ROOT'] = $sitePath; | |
return $sitePath . '/pub/index.php'; | |
} | |
} |