=== DIAGNOSTICS: START === Tue Jul 28 00:15:41 IST 2026 === NODE & NPM VERSION === v24.18.0 11.16.0 === DIRECTORY STRUCTURE === total 252 drwxr-xr-x 17 waqtmoney nobody 4096 Jul 28 00:14 . drwxr-xr-x 20 waqtmoney nobody 4096 Jul 24 01:53 .. -rw-r--r-- 1 waqtmoney waqtmoney 2112 Jul 28 00:14 app.js -rw-r--r-- 1 root root 1884 Jul 27 19:52 app.log -rw-r--r-- 1 waqtmoney waqtmoney 2301 Jul 28 00:14 check-disb-totals.js -rw-r--r-- 1 waqtmoney waqtmoney 2193 Jul 28 00:14 check-geetpay-users.js -rw-r--r-- 1 waqtmoney waqtmoney 1133 Jul 28 00:14 check-github-actions.js -rw-r--r-- 1 waqtmoney waqtmoney 1267 Jul 28 00:14 check-last-paid.js -rw-r--r-- 1 waqtmoney waqtmoney 682 Jul 28 00:14 check-master-tenants.js -rw-r--r-- 1 waqtmoney waqtmoney 1503 Jul 28 00:14 check-stats-one-more-time.js -rw-r--r-- 1 waqtmoney waqtmoney 2156 Jul 28 00:14 check-tables.js drwxr-xr-x 2 waqtmoney waqtmoney 51 Jul 28 00:14 config drwxr-xr-x 2 waqtmoney waqtmoney 4096 Jul 28 00:14 controllers drwxr-xr-x 2 waqtmoney waqtmoney 81 Jul 28 00:14 database -rw-r--r-- 1 waqtmoney waqtmoney 799 Jul 28 00:14 debug-api-stats.js -rw-r--r-- 1 waqtmoney waqtmoney 128 Jul 28 00:15 diagnostics.txt drwxr-xr-x 2 waqtmoney waqtmoney 31 Jul 28 00:14 docs -rw------- 1 waqtmoney waqtmoney 3217 Jul 9 11:23 .env -rw------- 1 root root 0 Jul 9 10:38 .env.save -rw-r--r-- 1 waqtmoney waqtmoney 3152 Jul 9 10:38 .env.save.1 -rw-r--r-- 1 waqtmoney waqtmoney 171 Jul 28 00:14 .htaccess -rw-r--r-- 1 waqtmoney waqtmoney 49 Jul 28 00:14 index.js -rw-r--r-- 1 waqtmoney waqtmoney 1399 Jul 28 00:14 list-tables.js drwxr-xr-x 2 waqtmoney waqtmoney 202 Jul 28 00:14 middleware drwxr-xr-x 2 waqtmoney waqtmoney 4096 Jul 28 00:14 models drwxr-xr-x 166 root root 8192 Jul 27 23:51 node_modules -rw-r--r-- 1 waqtmoney waqtmoney 886 Jul 28 00:14 package.json -rw-r--r-- 1 waqtmoney waqtmoney 89157 Jul 28 00:14 package-lock.json -rw-r--r-- 1 waqtmoney waqtmoney 9244 Jul 28 00:14 README.md drwxr-xr-x 2 waqtmoney waqtmoney 4096 Jul 28 00:14 routes drwxr-xr-x 2 waqtmoney waqtmoney 8192 Jul 28 00:14 scratch drwxr-xr-x 2 waqtmoney waqtmoney 4096 Jul 28 00:14 scripts -rw-r--r-- 1 waqtmoney waqtmoney 1773 Jul 28 00:14 server.js drwxr-xr-x 2 waqtmoney waqtmoney 4096 Jul 28 00:14 services -rw-r--r-- 1 root root 1302 Jul 27 23:51 superadmin_debug.log -rw-r--r-- 1 waqtmoney waqtmoney 1231 Jul 28 00:14 test-disb-ok.js -rw-r--r-- 1 waqtmoney waqtmoney 5374 Jul 28 00:14 test-real-stats.js -rw-r--r-- 1 waqtmoney waqtmoney 2796 Jul 28 00:14 test-reports-match.js -rw-r--r-- 1 waqtmoney waqtmoney 3810 Jul 28 00:14 test-stats.js -rw-r--r-- 1 waqtmoney waqtmoney 1872 Jul 28 00:14 test-trend.js drwxr-xr-x 2 waqtmoney waqtmoney 25 Jul 8 19:51 tmp drwxr-xr-x 8 root root 128 Jul 10 15:40 uploads drwxr-xr-x 2 waqtmoney waqtmoney 62 Jul 28 00:14 utils drwxr-xr-x 3 waqtmoney waqtmoney 28 May 22 16:30 .well-known === NODE_MODULES DETAILS === drwxr-xr-x 166 root root 8192 Jul 27 23:51 node_modules total 20 drwxr-xr-x 4 root root 65 Jul 27 23:51 . drwxr-xr-x 166 root root 8192 Jul 27 23:51 .. drwxr-xr-x 5 root root 76 Jul 27 23:51 lib -rw-r--r-- 1 root root 4067 Jul 27 23:51 package.json -rw-r--r-- 1 root root 3013 Jul 27 23:51 README.md drwxr-xr-x 11 root root 293 Jul 27 23:51 src === HTACCESS DETAILS === DirectoryIndex disabled # RewriteEngine On # RewriteCond %{REQUEST_FILENAME} !-f # RewriteCond %{REQUEST_FILENAME} !-d # RewriteRule ^(.*)$ http://localhost:8082/$1 [P,L] # EDI_API_SUBDOMAIN_BYPASS_START RewriteEngine On RewriteCond %{HTTP_HOST} ^(edi-api|testing-edi-api)\.waqtmoney\.com$ [NC] RewriteRule ^ - [L] # EDI_API_SUBDOMAIN_BYPASS_END Header set Permissions-Policy "camera=(self), microphone=(self), geolocation=(), payment=()" # ==================================================================== # WAQT MONEY PRODUCTION .HTACCESS # React + Vite + cPanel + Apache # High Performance + Security + Caching + EDI API Bypass # ==================================================================== DirectoryIndex index.html # ========================================================== # Compression (GZIP) # ========================================================== AddOutputFilterByType DEFLATE \ text/plain \ text/html \ text/xml \ text/css \ text/javascript \ application/javascript \ application/json \ application/xml \ application/rss+xml \ image/svg+xml \ application/vnd.ms-fontobject \ font/ttf \ font/otf \ font/woff \ font/woff2 # ========================================================== # Brotli Compression # ========================================================== AddOutputFilterByType BROTLI_COMPRESS \ text/plain \ text/html \ text/css \ text/javascript \ application/javascript \ application/json \ image/svg+xml \ font/woff2 # ========================================================== # Browser Cache # ========================================================== ExpiresActive On # HTML ExpiresByType text/html "access plus 0 seconds" # Images ExpiresByType image/jpeg "access plus 1 year" ExpiresByType image/jpg "access plus 1 year" ExpiresByType image/png "access plus 1 year" ExpiresByType image/gif "access plus 1 year" ExpiresByType image/webp "access plus 1 year" ExpiresByType image/avif "access plus 1 year" ExpiresByType image/svg+xml "access plus 1 year" ExpiresByType image/x-icon "access plus 1 year" # CSS ExpiresByType text/css "access plus 1 year" # JavaScript ExpiresByType application/javascript "access plus 1 year" ExpiresByType text/javascript "access plus 1 year" # Fonts ExpiresByType font/woff2 "access plus 1 year" ExpiresByType font/woff "access plus 1 year" ExpiresByType font/ttf "access plus 1 year" ExpiresByType font/otf "access plus 1 year" ExpiresByType application/font-woff "access plus 1 year" # ========================================================== # Headers # ========================================================== # Static assets cache Header set Cache-Control "public, max-age=31536000, immutable" # HTML no cache Header set Cache-Control "no-cache, no-store, must-revalidate" Header set Pragma "no-cache" Header set Expires "0" # Security Headers Header always set X-Content-Type-Options "nosniff" Header always set X-Frame-Options "SAMEORIGIN" Header always set Referrer-Policy "strict-origin-when-cross-origin" Header always set Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=()" # ========================================================== # React SPA + EDI API Routing # ========================================================== RewriteEngine On RewriteBase / # ------------------------------------------------------ # Force HTTPS # ------------------------------------------------------ RewriteCond %{HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] # ------------------------------------------------------ # Skip React Routing for EDI APIs # ------------------------------------------------------ RewriteCond %{HTTP_HOST} ^(edi-api|testing-edi-api)\.waqtmoney\.com$ [NC] RewriteRule ^ - [L] # ------------------------------------------------------ # Existing files/directories # ------------------------------------------------------ RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] # ------------------------------------------------------ # React Router # ------------------------------------------------------ RewriteRule ^ index.html [L] # React Router 404 ErrorDocument 404 /index.html # ========================================================== # PHP Handler (cPanel) # ========================================================== # php -- BEGIN cPanel-generated handler, do not edit # Set the “ea-php82” package as the default “PHP” programming language. AddHandler application/x-httpd-ea-php82 .php .php8 .phtml # php -- END cPanel-generated handler, do not edit === RUNNING DIAGNOSTIC SCRIPT === === DIAGNOSING VIA SSH-PUTTY EMULATION === Executing: whoami Output: waqtmoney Executing: pm2 list || true /bin/bash: pm2: command not found Output: (No stdout) Executing: sudo pm2 list || true sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper sudo: a password is required Output: (No stdout) Executing: ls -ld /home/waqtmoney/public_html/payday-api/node_modules || echo 'node_modules does not exist' Output: drwxr-xr-x 166 root root 8192 Jul 27 23:51 /home/waqtmoney/public_html/payday-api/node_modules Executing: ls -la /home/waqtmoney/public_html/payday-api/database Output: total 92 drwxr-xr-x 2 waqtmoney waqtmoney 81 Jul 28 00:14 . drwxr-xr-x 17 waqtmoney nobody 4096 Jul 28 00:14 .. -rw-r--r-- 1 waqtmoney waqtmoney 3369 Jul 28 00:14 bootstrap.js -rw-r--r-- 1 waqtmoney waqtmoney 10074 Jul 28 00:14 masterSchema.js -rw-r--r-- 1 waqtmoney waqtmoney 65117 Jul 28 00:14 schema.js -rw-r--r-- 1 waqtmoney waqtmoney 4959 Jul 28 00:14 seed.js Executing: node -e "console.log(require('./database/bootstrap'))" || true Output: { bootstrap: [AsyncFunction: bootstrap] } Executing: node -e "console.log(require('./app'))" || true /home/waqtmoney/public_html/payday-api/config/uploads.js:36 if (CONFIGURED_UPLOADS_ROOT === DEFAULT_UPLOADS_ROOT) throw error; ^ Error: EACCES: permission denied, access '/home/waqtmoney/public_html/payday-api/uploads' at Object.accessSync (node:fs:242:11) at prepareUploadsRoot (/home/waqtmoney/public_html/payday-api/config/uploads.js:28:6) at resolveUploadsRoot (/home/waqtmoney/public_html/payday-api/config/uploads.js:34:12) at Object. (/home/waqtmoney/public_html/payday-api/config/uploads.js:46:22) at Module._compile (node:internal/modules/cjs/loader:1871:14) at Module._extensions..js (node:internal/modules/cjs/loader:2002:10) at Module.load (node:internal/modules/cjs/loader:1594:32) at Module._load (node:internal/modules/cjs/loader:1396:12) at wrapModuleLoad (node:internal/modules/cjs/loader:255:19) at Module.require (node:internal/modules/cjs/loader:1617:12) { errno: -13, code: 'EACCES', syscall: 'access', path: '/home/waqtmoney/public_html/payday-api/uploads' } Node.js v24.18.0 Output: (No stdout) === APACHE ERROR LOGS === === READING APACHE ERROR LOG === Apache error log does not exist. === DIAGNOSTICS: END ===