Bearsampp 2026.9.23
Loading...
Searching...
No Matches
class.path.php
Go to the documentation of this file.
1<?php
2/*
3 *
4 * * Copyright (c) 2022-2025 Bearsampp
5 * * License: GNU General Public License version 3 or later; see LICENSE.txt
6 * * Website: https://bearsampp.com
7 * * Github: https://github.com/Bearsampp
8 *
9 */
10
24class Path
25{
33 public static function getModuleRootPath($module)
34 {
35 return $module->rootPath;
36 }
37
45 public static function getModuleCurrentPath($module)
46 {
47 return $module->currentPath;
48 }
49
57 public static function getModuleSymlinkPath($module)
58 {
59 return $module->symlinkPath;
60 }
61
67 private static $pathFormatCache = [];
68
74 private static $rootPath;
75
81 private static $corePath;
82
91 public static function init($rootPath, $corePath)
92 {
93 self::$rootPath = str_replace('\\', '/', rtrim($rootPath, '/\\'));
94 self::$corePath = str_replace('\\', '/', rtrim($corePath, '/\\'));
95 }
96
102 private static $pathFormatCacheMaxSize = 500;
103
109 private static $pathFormatStats = [
110 'unix_hits' => 0,
111 'unix_misses' => 0,
112 'windows_hits' => 0,
113 'windows_misses' => 0,
114 ];
115
127 public static function formatWindowsPath($path)
128 {
129 if (empty($path)) {
130 return $path;
131 }
132
133 $cacheKey = 'w_' . $path;
134 if (isset(self::$pathFormatCache[$cacheKey])) {
135 self::$pathFormatStats['windows_hits']++;
136
137 return self::$pathFormatCache[$cacheKey];
138 }
139
140 self::$pathFormatStats['windows_misses']++;
141
142 $result = str_replace('/', '\\', $path);
143
144 if (count(self::$pathFormatCache) < self::$pathFormatCacheMaxSize) {
145 self::$pathFormatCache[$cacheKey] = $result;
146 } else {
147 $removeCount = (int)(self::$pathFormatCacheMaxSize * 0.1);
148 self::$pathFormatCache = array_slice(self::$pathFormatCache, $removeCount, null, true);
149 self::$pathFormatCache[$cacheKey] = $result;
150 }
151
152 return $result;
153 }
154
166 public static function formatUnixPath($path)
167 {
168 if (empty($path)) {
169 return $path;
170 }
171
172 $cacheKey = 'u_' . $path;
173 if (isset(self::$pathFormatCache[$cacheKey])) {
174 self::$pathFormatStats['unix_hits']++;
175
176 return self::$pathFormatCache[$cacheKey];
177 }
178
179 self::$pathFormatStats['unix_misses']++;
180
181 $result = str_replace('\\', '/', $path);
182
183 if (count(self::$pathFormatCache) < self::$pathFormatCacheMaxSize) {
184 self::$pathFormatCache[$cacheKey] = $result;
185 } else {
186 $removeCount = (int)(self::$pathFormatCacheMaxSize * 0.1);
187 self::$pathFormatCache = array_slice(self::$pathFormatCache, $removeCount, null, true);
188 self::$pathFormatCache[$cacheKey] = $result;
189 }
190
191 return $result;
192 }
193
200 public static function getPathFormatStats()
201 {
202 return self::$pathFormatStats;
203 }
204
213 public static function changePath($filesToScan, $rootPath = null)
214 {
216
217 $result = array(
218 'countChangedOcc' => 0,
219 'countChangedFiles' => 0
220 );
221
223 $unixOldPath = Path::formatUnixPath($bearsamppCore->getLastPathContent());
224 $windowsOldPath = Path::formatWindowsPath($bearsamppCore->getLastPathContent());
225 $unixCurrentPath = Path::formatUnixPath($rootPath);
226 $windowsCurrentPath = Path::formatWindowsPath($rootPath);
227
228 foreach ($filesToScan as $fileToScan) {
229 $tmpCountChangedOcc = 0;
230 $fileContentOr = file_get_contents($fileToScan);
231
232 if ($fileContentOr === false) {
233 Log::error("changePath(): Failed to read file: " . $fileToScan);
234 continue;
235 }
236
237 $fileContent = $fileContentOr;
238
239 // old path
240 if (stripos($fileContent, $unixOldPath) !== false) {
241 $fileContent = str_ireplace($unixOldPath, $unixCurrentPath, $fileContent, $countChanged);
242 $tmpCountChangedOcc += $countChanged;
243 }
244 if (stripos($fileContent, $windowsOldPath) !== false) {
245 $fileContent = str_ireplace($windowsOldPath, $windowsCurrentPath, $fileContent, $countChanged);
246 $tmpCountChangedOcc += $countChanged;
247 }
248
249 // placeholders
250 if (strpos($fileContent, Core::PATH_LIN_PLACEHOLDER) !== false) {
251 $fileContent = str_replace(Core::PATH_LIN_PLACEHOLDER, $unixCurrentPath, $fileContent, $countChanged);
252 $tmpCountChangedOcc += $countChanged;
253 }
254 if (strpos($fileContent, Core::PATH_WIN_PLACEHOLDER) !== false) {
255 $fileContent = str_replace(Core::PATH_WIN_PLACEHOLDER, $windowsCurrentPath, $fileContent, $countChanged);
256 $tmpCountChangedOcc += $countChanged;
257 }
258
259 if ($fileContentOr != $fileContent) {
260 if (file_put_contents($fileToScan, $fileContent) !== false) {
261 $result['countChangedOcc'] += $tmpCountChangedOcc;
262 $result['countChangedFiles'] += 1;
263 } else {
264 Log::error("changePath(): Failed to write to file: " . $fileToScan);
265 }
266 }
267 }
268
269 Log::debug('changePath() completed: ' . $result['countChangedFiles'] . ' files changed, ' . $result['countChangedOcc'] . ' total occurrences');
270
271 return $result;
272 }
273
280 public static function clearPathFormatCache()
281 {
282 self::$pathFormatCache = [];
283 self::$pathFormatStats = [
284 'unix_hits' => 0,
285 'unix_misses' => 0,
286 'windows_hits' => 0,
287 'windows_misses' => 0,
288 ];
289 }
290
296 public static function getPathFormatCacheSize()
297 {
298 return count(self::$pathFormatCache);
299 }
300
308 public static function aetrayPath($path)
309 {
311 $path = str_replace($rootPath, '', $path);
312 $path = ltrim(self::formatUnixPath($path), '/');
313
314 return '%AeTrayMenuPath%' . $path;
315 }
316
324 public static function getRootPath($aetrayPath = false)
325 {
326 return $aetrayPath ? self::aetrayPath(self::$rootPath) : self::$rootPath;
327 }
328
336 public static function getAjaxPath($aetrayPath = false)
337 {
338 return self::getHomepagePath($aetrayPath) . '/ajax';
339 }
340
348 public static function getAliasPath($aetrayPath = false)
349 {
350 return self::getRootPath($aetrayPath) . '/alias';
351 }
352
360 public static function getAppsPath($aetrayPath = false)
361 {
362 return self::getRootPath($aetrayPath) . '/apps';
363 }
364
372 public static function getBatchLogFilePath($aetrayPath = false)
373 {
374 return self::getLogsPath($aetrayPath) . '/bearsampp-batch.log';
375 }
376
384 public static function getBinPath($aetrayPath = false)
385 {
386 return self::getRootPath($aetrayPath) . '/bin';
387 }
388
396 public static function getConfigFilePath($aetrayPath = false)
397 {
398 return self::getRootPath($aetrayPath) . '/bearsampp.conf';
399 }
400
408 public static function getCorePath($aetrayPath = false)
409 {
410 return $aetrayPath ? self::aetrayPath(self::$corePath) : self::$corePath;
411 }
412
418 public static function getProcessName()
419 {
420 return 'bearsampp';
421 }
422
430 public static function getLocalUrl($request = null)
431 {
432 global $bearsamppBins;
433 $isHttps = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off');
434 $scheme = $isHttps ? 'https://' : 'http://';
435 $host = (isset($_SERVER['SERVER_NAME'])) ? $_SERVER['SERVER_NAME'] : 'localhost';
436
437 $port = 80;
438 if (isset($bearsamppBins) && $bearsamppBins->getApache() !== null) {
439 $port = $isHttps ? $bearsamppBins->getApache()->getSslPort() : $bearsamppBins->getApache()->getPort();
440 }
441
442 $portSuffix = '';
443 if ($isHttps) {
444 if ($port != 443) {
445 $portSuffix = ':' . $port;
446 }
447 } else {
448 if ($port != 80) {
449 $portSuffix = ':' . $port;
450 }
451 }
452
453 return $scheme . $host . $portSuffix . (!empty($request) ? '/' . $request : '');
454 }
455
463 public static function getErrorLogFilePath($aetrayPath = false)
464 {
465 return self::getLogsPath($aetrayPath) . '/bearsampp-error.log';
466 }
467
475 public static function getExeFilePath($aetrayPath = false)
476 {
477 return self::getRootPath($aetrayPath) . '/bearsampp.exe';
478 }
479
487 public static function getHomepageFilePath($aetrayPath = false)
488 {
489 return self::getWwwPath($aetrayPath) . '/index.php';
490 }
491
499 public static function getHomepageLogFilePath($aetrayPath = false)
500 {
501 return self::getLogsPath($aetrayPath) . '/bearsampp-homepage.log';
502 }
503
511 public static function getHomepagePath($aetrayPath = false)
512 {
513 return self::getResourcesPath($aetrayPath) . '/homepage';
514 }
515
523 public static function getHostsEditorPath($aetrayPath = false)
524 {
525 return self::getLibsPath($aetrayPath) . '/hostseditor';
526 }
527
535 public static function getHostsEditorExe($aetrayPath = false)
536 {
537 return self::getHostsEditorPath($aetrayPath) . '/' . Core::HOSTSEDITOR_EXE;
538 }
539
547 public static function getIconsPath($aetrayPath = false)
548 {
549 return self::getImagesPath($aetrayPath) . '/icons';
550 }
551
559 public static function getImagesPath($aetrayPath = false)
560 {
561 return self::getHomepagePath($aetrayPath) . '/img';
562 }
563
571 public static function getIniFilePath($aetrayPath = false)
572 {
573 return self::getRootPath($aetrayPath) . '/bearsampp.ini';
574 }
575
583 public static function getisRootFilePath($aetrayPath = false)
584 {
585 return self::getCorePath($aetrayPath) . '/' . Core::isRoot_FILE;
586 }
587
595 public static function getLangsPath($aetrayPath = false)
596 {
597 return self::getCorePath($aetrayPath) . '/langs';
598 }
599
607 public static function getLastPath($aetrayPath = false)
608 {
609 return self::getResourcesPath($aetrayPath) . '/' . Core::LAST_PATH;
610 }
611
619 public static function getLibsPath($aetrayPath = false)
620 {
621 return self::getCorePath($aetrayPath) . '/libs';
622 }
623
631 public static function getLnPath($aetrayPath = false)
632 {
633 return self::getLibsPath($aetrayPath) . '/ln';
634 }
635
643 public static function getLnExe($aetrayPath = false)
644 {
645 return self::getLnPath($aetrayPath) . '/' . Core::LN_EXE;
646 }
647
655 public static function getLogFilePath($aetrayPath = false)
656 {
657 return self::getLogsPath($aetrayPath) . '/bearsampp.log';
658 }
659
667 public static function getLogsPath($aetrayPath = false)
668 {
669 return self::getRootPath($aetrayPath) . '/logs';
670 }
671
679 public static function getNssmPath($aetrayPath = false)
680 {
681 return self::getLibsPath($aetrayPath) . '/nssm';
682 }
683
691 public static function getNssmExe($aetrayPath = false)
692 {
693 return self::getNssmPath($aetrayPath) . '/' . Core::NSSM_EXE;
694 }
695
701 public static function getNssmEnvPaths()
702 {
703 global $bearsamppBins, $bearsamppTools;
704
705 $paths = '';
706
707 // Add paths for enabled bins
708 if (isset($bearsamppBins)) {
709 if ($bearsamppBins->getApache() && $bearsamppBins->getApache()->isEnable()) {
710 $paths .= self::getModuleSymlinkPath($bearsamppBins->getApache()) . '/bin;';
711 }
712 if ($bearsamppBins->getPhp() && $bearsamppBins->getPhp()->isEnable()) {
713 $paths .= self::getModuleSymlinkPath($bearsamppBins->getPhp()) . ';';
714 $paths .= self::getModuleSymlinkPath($bearsamppBins->getPhp()) . '/pear;';
715 $paths .= self::getModuleSymlinkPath($bearsamppBins->getPhp()) . '/deps;';
716 $paths .= self::getModuleSymlinkPath($bearsamppBins->getPhp()) . '/imagick;';
717 }
718 if ($bearsamppBins->getNodejs() && $bearsamppBins->getNodejs()->isEnable()) {
719 $paths .= self::getModuleSymlinkPath($bearsamppBins->getNodejs()) . ';';
720 }
721 if ($bearsamppBins->getMysql() && $bearsamppBins->getMysql()->isEnable()) {
722 $paths .= self::getModuleSymlinkPath($bearsamppBins->getMysql()) . '/bin;';
723 }
724 if ($bearsamppBins->getMariadb() && $bearsamppBins->getMariadb()->isEnable()) {
725 $paths .= self::getModuleSymlinkPath($bearsamppBins->getMariadb()) . '/bin;';
726 }
727 if ($bearsamppBins->getPostgresql() && $bearsamppBins->getPostgresql()->isEnable()) {
728 $paths .= self::getModuleSymlinkPath($bearsamppBins->getPostgresql()) . '/bin;';
729 }
730 }
731
732 // Add paths for enabled tools
733 if (isset($bearsamppTools)) {
734 if ($bearsamppTools->getComposer() && $bearsamppTools->getComposer()->isEnable()) {
735 $paths .= self::getModuleSymlinkPath($bearsamppTools->getComposer()) . ';';
736 $paths .= self::getModuleSymlinkPath($bearsamppTools->getComposer()) . '/vendor/bin;';
737 }
738 if ($bearsamppTools->getGhostscript() && $bearsamppTools->getGhostscript()->isEnable()) {
739 $paths .= self::getModuleSymlinkPath($bearsamppTools->getGhostscript()) . '/bin;';
740 }
741 if ($bearsamppTools->getGit() && $bearsamppTools->getGit()->isEnable()) {
742 $paths .= self::getModuleSymlinkPath($bearsamppTools->getGit()) . '/bin;';
743 }
744 if ($bearsamppTools->getNgrok() && $bearsamppTools->getNgrok()->isEnable()) {
745 $paths .= self::getModuleSymlinkPath($bearsamppTools->getNgrok()) . ';';
746 }
747 if ($bearsamppTools->getPerl() && $bearsamppTools->getPerl()->isEnable()) {
748 $paths .= self::getModuleSymlinkPath($bearsamppTools->getPerl()) . '/perl/site/bin;';
749 $paths .= self::getModuleSymlinkPath($bearsamppTools->getPerl()) . '/perl/bin;';
750 $paths .= self::getModuleSymlinkPath($bearsamppTools->getPerl()) . '/c/bin;';
751 }
752 if ($bearsamppTools->getPython() && $bearsamppTools->getPython()->isEnable()) {
753 $paths .= self::getModuleSymlinkPath($bearsamppTools->getPython()) . '/bin;';
754 }
755 if ($bearsamppTools->getRuby() && $bearsamppTools->getRuby()->isEnable()) {
756 $paths .= self::getModuleSymlinkPath($bearsamppTools->getRuby()) . '/bin;';
757 }
758 }
759
760 return self::formatWindowsPath($paths);
761 }
762
770 public static function getNssmLogFilePath($aetrayPath = false)
771 {
772 return self::getLogsPath($aetrayPath) . '/bearsampp-nssm.log';
773 }
774
782 public static function getOpenSslConf($aetrayPath = false)
783 {
784 return self::getOpenSslPath($aetrayPath) . '/' . Core::OPENSSL_CONF;
785 }
786
794 public static function getOpenSslExe($aetrayPath = false)
795 {
796 return self::getOpenSslPath($aetrayPath) . '/' . Core::OPENSSL_EXE;
797 }
798
806 public static function getOpenSslPath($aetrayPath = false)
807 {
808 return self::getLibsPath($aetrayPath) . '/openssl';
809 }
810
818 public static function getPhpPath($aetrayPath = false)
819 {
820 return self::getLibsPath($aetrayPath) . '/php';
821 }
822
823
831 public static function getPearPath($aetrayPath = false)
832 {
833 return self::getPhpPath($aetrayPath) . '/pear';
834 }
835
843 public static function getPhpExe($aetrayPath = false)
844 {
845 return self::getPhpPath($aetrayPath) . '/' . Core::PHP_EXE;
846 }
847
853 public static function getPowerShellPath()
854 {
855 if (is_dir('C:\Windows\System32\WindowsPowerShell')) {
856 return Util::findFile('C:\Windows\System32\WindowsPowerShell', 'powershell.exe');
857 }
858
859 return false;
860 }
861
876 public static function findExecutable($name)
877 {
878 $name = trim($name);
879 if ($name == '') {
880 return false;
881 }
882
883 if (is_file($name)) {
884 return self::formatWindowsPath($name);
885 }
886
887 $baseName = basename($name);
888 $hasExtension = pathinfo($baseName, PATHINFO_EXTENSION) != '';
889 $pathExtensions = explode(';', getenv('PATHEXT') !== false ? getenv('PATHEXT') : '.COM;.EXE;.BAT;.CMD');
890 $extensions = $hasExtension ? array('') : $pathExtensions;
891
892 // WinBinder file registry
893 global $bearsamppWinbinder;
894 if (isset($bearsamppWinbinder)) {
895 $found = $bearsamppWinbinder->findFile($baseName);
896 if ($found !== false && is_file($found)) {
897 return self::formatWindowsPath($found);
898 }
899 }
900
901 // App Paths registry (HKCU first, then HKLM)
903 $appPath = Win32Native::registryGetValue($hive, 'SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\\' . $baseName);
904 if (is_string($appPath) && trim($appPath) != '') {
905 // App Paths values may include command line arguments after the executable
906 $cleanPath = trim(str_replace('"', '', $appPath));
907 $appPath = preg_match('/^.*\.exe\b/i', $cleanPath, $match) ? $match[0] : strtok($cleanPath, " \t");
908 if (is_file($appPath)) {
909 return self::formatWindowsPath($appPath);
910 }
911 }
912 }
913
914 // Directories listed in the PATH environment variable
915 $envPath = getenv('PATH');
916 if ($envPath !== false) {
917 foreach (explode(';', $envPath) as $dir) {
918 $dir = trim($dir);
919 if ($dir == '') {
920 continue;
921 }
922 foreach ($extensions as $extension) {
923 $candidate = $dir . '\\' . $baseName . $extension;
924 if (is_file($candidate)) {
925 return self::formatWindowsPath($candidate);
926 }
927 }
928 }
929 }
930
931 // Windows, System32 and SysWOW64 directories
932 $systemRoot = getenv('SystemRoot');
933 if ($systemRoot !== false) {
934 foreach (array('\\System32\\', '\\SysWOW64\\', '\\') as $subDir) {
935 foreach ($extensions as $extension) {
936 $candidate = $systemRoot . $subDir . $baseName . $extension;
937 if (is_file($candidate)) {
938 return self::formatWindowsPath($candidate);
939 }
940 }
941 }
942 }
943
944 return false;
945 }
946
954 public static function getPwgenPath($aetrayPath = false)
955 {
956 return self::getLibsPath($aetrayPath) . '/pwgen';
957 }
958
966 public static function getPwgenExe($aetrayPath = false)
967 {
968 return self::getPwgenPath($aetrayPath) . '/' . Core::PWGEN_EXE;
969 }
970
978 public static function getRegistryLogFilePath($aetrayPath = false)
979 {
980 return self::getLogsPath($aetrayPath) . '/bearsampp-registry.log';
981 }
982
988 public static function getStartupLnkPath()
989 {
990 $startupPath = Win32Native::getSpecialFolderPath('Startup');
991
992 return $startupPath ? $startupPath . '/' . APP_TITLE . '.lnk' : false;
993 }
994
1002 public static function getResourcesPath($aetrayPath = false)
1003 {
1004 return self::getCorePath($aetrayPath) . '/resources';
1005 }
1006
1014 public static function getScript($type)
1015 {
1016 return self::getScriptsPath() . '/' . $type;
1017 }
1018
1026 public static function getScriptsPath($aetrayPath = false)
1027 {
1028 return self::getCorePath($aetrayPath) . '/scripts';
1029 }
1030
1038 public static function getServicesLogFilePath($aetrayPath = false)
1039 {
1040 return self::getLogsPath($aetrayPath) . '/bearsampp-services.log';
1041 }
1042
1050 public static function getSetEnvPath($aetrayPath = false)
1051 {
1052 return self::getLibsPath($aetrayPath) . '/setenv';
1053 }
1054
1062 public static function getSetEnvExe($aetrayPath = false)
1063 {
1064 return self::getSetEnvPath($aetrayPath) . '/' . Core::SETENV_EXE;
1065 }
1066
1074 public static function getSslConfPath($aetrayPath = false)
1075 {
1076 return self::getSslPath($aetrayPath) . '/openssl.cnf';
1077 }
1078
1086 public static function getSslPath($aetrayPath = false)
1087 {
1088 return self::getRootPath($aetrayPath) . '/ssl';
1089 }
1090
1098 public static function getStartupLogFilePath($aetrayPath = false)
1099 {
1100 return self::getLogsPath($aetrayPath) . '/bearsampp-startup.log';
1101 }
1102
1110 public static function getTmpPath($aetrayPath = false)
1111 {
1112 return self::getCorePath($aetrayPath) . '/tmp';
1113 }
1114
1122 public static function getToolsPath($aetrayPath = false)
1123 {
1124 return self::getRootPath($aetrayPath) . '/tools';
1125 }
1126
1134 public static function getMkcertPath($aetrayPath = false)
1135 {
1136 return self::getLibsPath($aetrayPath) . '/mkcert';
1137 }
1138
1146 public static function getMkcertExe($aetrayPath = false)
1147 {
1148 return self::getMkcertPath($aetrayPath) . '/mkcert.exe';
1149 }
1150
1156 public static function getMkcertRootCaName()
1157 {
1158 return 'rootCA.pem';
1159 }
1160
1168 public static function getVhostsPath($aetrayPath = false)
1169 {
1170 return self::getRootPath($aetrayPath) . '/vhosts';
1171 }
1172
1178 public static function getWebIconsPath()
1179 {
1180 return self::getWebImagesPath() . '/icons';
1181 }
1182
1188 public static function getWebImagesPath()
1189 {
1190 return self::getWebResourcesPath() . '/img';
1191 }
1192
1198 public static function getWebResourcesPath()
1199 {
1200 return rtrim(md5(APP_TITLE), '/');
1201 }
1202
1208 public static function getWebResourcesUrl()
1209 {
1210 global $bearsamppBins;
1211 $request = self::getWebResourcesPath();
1212 $isHttps = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off');
1213 $scheme = $isHttps ? 'https://' : 'http://';
1214 $host = (isset($_SERVER['SERVER_NAME'])) ? $_SERVER['SERVER_NAME'] : 'localhost';
1215
1216 $port = 80;
1217 if (isset($bearsamppBins) && $bearsamppBins->getApache() !== null) {
1218 $port = $isHttps ? $bearsamppBins->getApache()->getSslPort() : $bearsamppBins->getApache()->getPort();
1219 }
1220
1221 $portSuffix = '';
1222 if ($isHttps) {
1223 if ($port != 443) {
1224 $portSuffix = ':' . $port;
1225 }
1226 } else {
1227 if ($port != 80) {
1228 $portSuffix = ':' . $port;
1229 }
1230 }
1231
1232 return $scheme . $host . $portSuffix . (!empty($request) ? '/' . $request : '');
1233 }
1234
1242 public static function getWinbinderLogFilePath($aetrayPath = false)
1243 {
1244 return self::getLogsPath($aetrayPath) . '/bearsampp-winbinder.log';
1245 }
1246
1254 public static function getWwwPath($aetrayPath = false)
1255 {
1256 return self::getRootPath($aetrayPath) . '/www';
1257 }
1258}
$result
global $bearsamppBins
global $bearsamppRoot
$port
global $bearsamppCore
const OPENSSL_CONF
const PHP_EXE
const PWGEN_EXE
const isRoot_FILE
const PATH_LIN_PLACEHOLDER
const NSSM_EXE
const SETENV_EXE
const LN_EXE
const PATH_WIN_PLACEHOLDER
const HOSTSEDITOR_EXE
const OPENSSL_EXE
const LAST_PATH
static debug($data, $file=null)
static error($data, $file=null)
static getHomepageFilePath($aetrayPath=false)
static getNssmPath($aetrayPath=false)
static getScriptsPath($aetrayPath=false)
static getExeFilePath($aetrayPath=false)
static getBatchLogFilePath($aetrayPath=false)
static getPathFormatCacheSize()
static getSslConfPath($aetrayPath=false)
static clearPathFormatCache()
static getHostsEditorExe($aetrayPath=false)
static getAjaxPath($aetrayPath=false)
static findExecutable($name)
static $rootPath
static getCorePath($aetrayPath=false)
static getWebResourcesPath()
static getHomepagePath($aetrayPath=false)
static getAliasPath($aetrayPath=false)
static getPwgenPath($aetrayPath=false)
static getSslPath($aetrayPath=false)
static getRootPath($aetrayPath=false)
static getLogFilePath($aetrayPath=false)
static getStartupLogFilePath($aetrayPath=false)
static getIconsPath($aetrayPath=false)
static getWebImagesPath()
static init($rootPath, $corePath)
static getProcessName()
static aetrayPath($path)
static getServicesLogFilePath($aetrayPath=false)
static getToolsPath($aetrayPath=false)
static getSetEnvExe($aetrayPath=false)
static getOpenSslExe($aetrayPath=false)
static getLogsPath($aetrayPath=false)
static getResourcesPath($aetrayPath=false)
static getConfigFilePath($aetrayPath=false)
static getWebResourcesUrl()
static getMkcertExe($aetrayPath=false)
static getLocalUrl($request=null)
static getWwwPath($aetrayPath=false)
static getNssmEnvPaths()
static $corePath
static formatWindowsPath($path)
static changePath($filesToScan, $rootPath=null)
static getVhostsPath($aetrayPath=false)
static getOpenSslPath($aetrayPath=false)
static getMkcertPath($aetrayPath=false)
static getNssmLogFilePath($aetrayPath=false)
static formatUnixPath($path)
static $pathFormatCacheMaxSize
static getPhpExe($aetrayPath=false)
static getRegistryLogFilePath($aetrayPath=false)
static getHostsEditorPath($aetrayPath=false)
static $pathFormatStats
static getModuleSymlinkPath($module)
static getPathFormatStats()
static getScript($type)
static getWebIconsPath()
static getisRootFilePath($aetrayPath=false)
static getPearPath($aetrayPath=false)
static getOpenSslConf($aetrayPath=false)
static getBinPath($aetrayPath=false)
static getPwgenExe($aetrayPath=false)
static getTmpPath($aetrayPath=false)
static getLibsPath($aetrayPath=false)
static getLastPath($aetrayPath=false)
static getModuleCurrentPath($module)
static getHomepageLogFilePath($aetrayPath=false)
static getLnExe($aetrayPath=false)
static getLangsPath($aetrayPath=false)
static getSetEnvPath($aetrayPath=false)
static getModuleRootPath($module)
static getStartupLnkPath()
static getNssmExe($aetrayPath=false)
static getPhpPath($aetrayPath=false)
static getErrorLogFilePath($aetrayPath=false)
static getImagesPath($aetrayPath=false)
static getPowerShellPath()
static $pathFormatCache
static getAppsPath($aetrayPath=false)
static getMkcertRootCaName()
static getWinbinderLogFilePath($aetrayPath=false)
static getIniFilePath($aetrayPath=false)
static getLnPath($aetrayPath=false)
const HKEY_CURRENT_USER
const HKEY_LOCAL_MACHINE
static findFile($startPath, $findFile)
static registryGetValue($hive, $key, $value='')
static getSpecialFolderPath($folderName)
const APP_TITLE
Definition root.php:19