fix: Detect exact .env location and report in /api/test/nabeh
This commit is contained in:
@@ -16,23 +16,30 @@ class TestController
|
|||||||
*/
|
*/
|
||||||
public function testNabeh(Request $request, Response $response): void
|
public function testNabeh(Request $request, Response $response): void
|
||||||
{
|
{
|
||||||
|
$loadedEnvPath = defined('LOADED_ENV_PATH') ? LOADED_ENV_PATH : 'Undefined';
|
||||||
|
|
||||||
$results = [
|
$results = [
|
||||||
'timestamp' => date('Y-m-d H:i:s'),
|
'timestamp' => date('Y-m-d H:i:s'),
|
||||||
|
'loaded_env_file' => $loadedEnvPath,
|
||||||
'env_check' => [
|
'env_check' => [
|
||||||
'NABEH_AUTH_URL' => getenv('NABEH_AUTH_URL') ? '✅ Configured (' . getenv('NABEH_AUTH_URL') . ')' : '❌ Missing',
|
'REDIS_HOST' => getenv('REDIS_HOST') ?: '❌ Not Set',
|
||||||
'NABEH_SEND_URL' => getenv('NABEH_SEND_URL') ? '✅ Configured (' . getenv('NABEH_SEND_URL') . ')' : '❌ Missing',
|
'REDIS_PORT' => getenv('REDIS_PORT') ?: '❌ Not Set',
|
||||||
'NABEH_EMAIL' => getenv('NABEH_EMAIL') ? '✅ Configured (' . substr((string)getenv('NABEH_EMAIL'), 0, 3) . '***)' : '❌ Missing',
|
'NABEH_AUTH_URL' => getenv('NABEH_AUTH_URL') ? '✅ ' . getenv('NABEH_AUTH_URL') : '❌ Missing',
|
||||||
|
'NABEH_SEND_URL' => getenv('NABEH_SEND_URL') ? '✅ ' . getenv('NABEH_SEND_URL') : '❌ Missing',
|
||||||
|
'NABEH_EMAIL' => getenv('NABEH_EMAIL') ? '✅ ' . substr((string)getenv('NABEH_EMAIL'), 0, 4) . '***' : '❌ Missing',
|
||||||
'NABEH_PASSWORD' => getenv('NABEH_PASSWORD') ? '✅ Configured (••••••)' : '❌ Missing',
|
'NABEH_PASSWORD' => getenv('NABEH_PASSWORD') ? '✅ Configured (••••••)' : '❌ Missing',
|
||||||
],
|
],
|
||||||
'redis_check' => [
|
'redis_check' => [
|
||||||
'connected' => false,
|
'target_host' => getenv('REDIS_HOST'),
|
||||||
|
'target_port' => getenv('REDIS_PORT'),
|
||||||
|
'connected' => false,
|
||||||
'cached_token_found' => false,
|
'cached_token_found' => false,
|
||||||
'token_sample' => null
|
'token_sample' => null
|
||||||
],
|
],
|
||||||
'nabeh_auth' => [
|
'nabeh_auth' => [
|
||||||
'success' => false,
|
'success' => false,
|
||||||
'token_acquired' => false,
|
'token_acquired' => false,
|
||||||
'error' => null
|
'error' => null
|
||||||
],
|
],
|
||||||
'live_otp_test' => null
|
'live_otp_test' => null
|
||||||
];
|
];
|
||||||
@@ -116,8 +123,11 @@ class TestController
|
|||||||
*/
|
*/
|
||||||
public function testSystem(Request $request, Response $response): void
|
public function testSystem(Request $request, Response $response): void
|
||||||
{
|
{
|
||||||
|
$loadedEnvPath = defined('LOADED_ENV_PATH') ? LOADED_ENV_PATH : 'Undefined';
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'status' => 'healthy',
|
'status' => 'healthy',
|
||||||
|
'loaded_env_file' => $loadedEnvPath,
|
||||||
'app' => [
|
'app' => [
|
||||||
'name' => getenv('APP_NAME') ?: 'Saqel',
|
'name' => getenv('APP_NAME') ?: 'Saqel',
|
||||||
'url' => getenv('APP_URL') ?: 'Not Set',
|
'url' => getenv('APP_URL') ?: 'Not Set',
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* Handles PSR-4 Autoloading, security settings, and strict error handling.
|
* Handles PSR-4 Autoloading, security settings, and strict error handling.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Define absolute path to application root
|
// Define absolute path to application root (saqel/backend)
|
||||||
define('APP_ROOT', dirname(__DIR__));
|
define('APP_ROOT', dirname(__DIR__));
|
||||||
|
|
||||||
// 1. PSR-4 Autoloader
|
// 1. PSR-4 Autoloader
|
||||||
@@ -28,28 +28,36 @@ spl_autoload_register(function ($class) {
|
|||||||
// 2. Load Environment Variables (Checks local and production server locations)
|
// 2. Load Environment Variables (Checks local and production server locations)
|
||||||
try {
|
try {
|
||||||
$candidatePaths = [
|
$candidatePaths = [
|
||||||
APP_ROOT . '/.env',
|
APP_ROOT . '/.env', // saqel/backend/.env
|
||||||
APP_ROOT . '/../.env',
|
APP_ROOT . '/../.env', // saqel/.env
|
||||||
APP_ROOT . '/docker/.env',
|
APP_ROOT . '/../../.env', // htdocs/saqel.intaleqapp.com/.env
|
||||||
|
'/home/intaleqapp-saqel/htdocs/saqel.intaleqapp.com/saqel/.env',
|
||||||
|
'/home/intaleqapp-saqel/htdocs/saqel.intaleqapp.com/.env',
|
||||||
'/home/intaleqapp-saqel/.env',
|
'/home/intaleqapp-saqel/.env',
|
||||||
'/home/saqel/.env',
|
'/home/saqel/.env',
|
||||||
|
APP_ROOT . '/docker/.env',
|
||||||
];
|
];
|
||||||
|
|
||||||
$env_file = null;
|
$env_file = null;
|
||||||
foreach ($candidatePaths as $path) {
|
foreach ($candidatePaths as $path) {
|
||||||
if (file_exists($path)) {
|
if (file_exists($path) && is_readable($path) && filesize($path) > 10) {
|
||||||
$env_file = $path;
|
$env_file = realpath($path) ?: $path;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($env_file) {
|
if ($env_file) {
|
||||||
|
define('LOADED_ENV_PATH', $env_file);
|
||||||
\App\Core\Env::load($env_file);
|
\App\Core\Env::load($env_file);
|
||||||
} else {
|
} else {
|
||||||
error_log("⚠️ [Env Warning] No .env file found in candidate paths. Expecting variables from server environment.");
|
define('LOADED_ENV_PATH', 'NONE_FOUND');
|
||||||
|
error_log("⚠️ [Env Warning] No valid .env file found in candidate paths. Expecting variables from server environment.");
|
||||||
}
|
}
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
error_log('Env Load Error: ' . $e->getMessage());
|
error_log('Env Load Error: ' . $e->getMessage());
|
||||||
|
if (!defined('LOADED_ENV_PATH')) {
|
||||||
|
define('LOADED_ENV_PATH', 'ERROR: ' . $e->getMessage());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. Configure Error Reporting based on environment
|
// 3. Configure Error Reporting based on environment
|
||||||
|
|||||||
Reference in New Issue
Block a user