fix: Detect exact .env location and report in /api/test/nabeh

This commit is contained in:
Hamza-Ayed
2026-08-26 22:43:18 +03:00
parent e4ad569d8c
commit 55c640609a
2 changed files with 33 additions and 15 deletions
+18 -8
View File
@@ -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',
+15 -7
View File
@@ -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