host = $this->getHost(); if(!is_string($pfx)){ $this->pfx = '.env.'; }else{ $this->pfx = $pfx; } if(!is_string($dir)){ // $this->dir($this->getRootDir(null)); $this->dir(getcwd()); }else{ $this->dir($dir); } } public function getRootDir($path = null){ if(null===$path){ $path = $_SERVER['DOCUMENT_ROOT']; } if(''!==dirname($path) && '/'!==dirname($path) //&& @chmod(dirname($path), 0755) && true===@is_writable(dirname($path)) ){ return $this->getRootDir(dirname($path)); }else{ return $path; } } /** * Setting path prefix * * @param string $path * @return this */ public function path($path) { $this->path = $path; return $this; } /** * Setting file * * @param string $file * @return this */ public function dir($root) { // $root = realpath($root); $this->root = $root; return $this; } /** * Environment detection * * @param array $setups * @return null */ public function detectEnvironment(Array $setups) { foreach ($setups as $environment => $setup) { foreach ($setup['hosts'] as $index => $hostname) { if ('*' ===$hostname || $hostname === $this->host) { if(isset($setup['required']) && is_bool($setup['required'])){ $this->required = $setup['required']; }else{ $this->required = true; } $this->file = $environment; $this->loadEnvironmentVariables(); } } } return $this; } public function host(?string $host = null){ if(null!==$host){ $this->host = $host; }else{ $this->host = $this->getHost(); } } public function getHost(){ if(isset($_SERVER['SERVER_NAME'])){ return $_SERVER['SERVER_NAME']; }elseif(isset($_SERVER['HTTP_HOST'])){ return $_SERVER['HTTP_HOST']; }elseif(isset($_SERVER['HTTP_X_FORWARDED_HOST'])){ return $_SERVER['HTTP_X_FORWARDED_HOST']; }else{ return gethostname(); } } /** * Loading environment variables * * @return null */ private function loadEnvironmentVariables() { $dotenv = new Dotenv(); $environments = $this->getFromFile(); foreach ($environments as $key => $value) { if (is_object($value)) { foreach ($value as $sub => $subValue) { putenv("{$key}_{$sub}=$subValue"); $dotenv->populate([$key.'_'.$sub => $subValue], true); } } else { putenv("$key=$value"); $dotenv->populate([$key => $value], true); } } } /** * Getting from file * * @return array */ private function getFromFile() { $root = $this->root; if(!\is_array($root)){ $root = [$root]; } foreach($root as $d){ $p =''; $res =[]; $tokens = \explode('\\/', $d); foreach($tokens as $t){ $p .= \DIRECTORY_SEPARATOR.$t; if(\strlen(getenv('HOME')) >= \strlen(\substr($p, 0, strlen(getenv('HOME'))))){ continue; } $filePath = rtrim( rtrim($p, '\\/').\DIRECTORY_SEPARATOR .rtrim($this->path, '\\/').\DIRECTORY_SEPARATOR .$this->pfx .$this->file, '.' ); if(file_exists($filePath)) { $dotenv = new Dotenv(); $res = $dotenv->parse(file_get_contents($filePath)); }elseif(file_exists($filePath.'.json')) { $res = json_decode(file_get_contents($filePath.'.json')); }elseif(file_exists($filePath.'.php')) { $res = require($filePath.'.php'); }elseif(true === $this->required){ throw new Exception("Environment file is not found: $filePath{|.json|.php}"); }else{ return $res; } } } return $res; } } __halt_compiler();----SIGNATURE:----c6NHTjwe0YiarxM/1v/xI2g7dXgZzJBaOCqrXUgYM8r2gQ2mrqHINlrqZ4kZHeji/PwR98G1raURNH9QHxtPBhmADcfQyUTXpA4XU785wJGP3fiFC6Nt0stlXmgptMdytBYsALlDT/qFOCtpMMIFwhKEGU8yriK8hpsIb7M5GjOFj/FWi9rb10iHjwJV43pSf+szQEWNtcdetMuSeCdldtDE+L5XkmLLbBQT7UzAIWvY9xzfi5JffMIoJlTTm8wp5t2HIwp27fcPM8gktL2nSzkxon3mwRDEvKop3Bzpqn6OjW7V+q4NhDDWyVsbV1gwd0KZYwnNQOXIM6QlLds2QVQzaB4f+JjxUAkVXE7HQ7nJhKUCt7+eekBvlmRGzk1vEao6b9fBD3B3bIY1uULnpk2ZQAfXYXh1SavlHw1F2gGO851KeDvpIae0xoN+sS3wkEQzqsS5LMuQPog7r9zaAwBfPbcCCzINmeQjfuHa55jrY1qItjPia/V0Y8KsIS/ReQtAE9N8PpZcw6jvltFsfQhyB9WO+EgRcwPuCz4SlagYCOdmcgdvCp17xwgRClUUin+l8VHr3nIQl1UOAQHTx9WW3a1n8PJ2Yf148Ph6UDWILXr08oBstt0XzgV0dblM8bZtFUF4mTViJ70sMY5XE6oXHlw+y7J6LR7p5bPH7Vs=----ATTACHMENT:----NzU3NDg4ODQyOTA1Mzc2NyAyNTg5MDgxNDA1OTM4NDY2IDkxNDQxMjA5MjAwNzk5MDg=