-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLocalValetDriver.php
78 lines (63 loc) · 1.99 KB
/
LocalValetDriver.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?php
use Valet\Drivers\LaravelValetDriver;
class LocalValetDriver extends LaravelValetDriver
{
protected $hasPublicDirectory = false;
/**
* Get the path to the application's front controller.
*/
public function getPublicPath($sitePath)
{
$publicPath = $sitePath . '/';
if ($this->hasPublicDirectory) {
$publicPath .= 'public/';
}
return $publicPath;
}
/**
* Determine if the driver serves the request.
*/
public function serves(string $sitePath, string $siteName, string $uri): bool
{
$this->hasPublicDirectory = is_dir($sitePath . '/public/');
return ($this->hasPublicDirectory && file_exists($sitePath . '/public/redaxo/index.php')) || file_exists($sitePath . '/redaxo/index.php');
}
/**
* Determine if the incoming request is for a static file.
*/
public function isStaticFile(string $sitePath, string $siteName, string $uri)/*: string|false */
{
$publicPath = $this->getPublicPath($sitePath) . trim($uri, '/');
if ($this->isActualFile($publicPath)) {
return $publicPath;
} elseif (file_exists($publicPath . '/index.html')) {
return $publicPath . '/index.html';
}
return false;
}
/**
* Get the fully resolved path to the application's front controller.
*/
public function frontControllerPath(string $sitePath, string $siteName, string $uri): ?string
{
$_SERVER['PHP_SELF'] = $uri;
$_SERVER['SERVER_ADDR'] = '127.0.0.1';
$_SERVER['SERVER_NAME'] = $_SERVER['HTTP_HOST'];
$docRoot = $this->getPublicPath($sitePath);
$uri = rtrim($uri, '/');
$candidates = [
$docRoot . $uri,
$docRoot . $uri . '/index.php',
$docRoot . '/index.php',
];
foreach ($candidates as $candidate) {
if ($this->isActualFile($candidate)) {
$_SERVER['SCRIPT_FILENAME'] = $candidate;
$_SERVER['SCRIPT_NAME'] = str_replace($docRoot, '', $candidate);
$_SERVER['DOCUMENT_ROOT'] = $docRoot;
return $candidate;
}
}
return null;
}
}