System health

ICCH Data QC · icch.aljubaer.com · Thu 15 Oct 2026, 15:29 · checked in 7 ms

PHP

Version
8.3.35 (Linux, 64-bit)
64-bit integers
64-bit

PHP extensions

pdo
Database access layer
pdo_mysql
MySQL driver — without this every page returns "Class PDO not found"
mbstring
UTF-8 handling for Bangla labels
json
API responses
fileinfo
Upload type detection
zip
Excel/zip export
openssl
Secure cron key comparison
intl
Locale-aware number formatting
opcache
Speeds up every request
Optional. Enable in hPanel → PHP Configuration if you want it.

PHP limits

memory_limit
256M (recommended 128M) — Pipeline stages hold one column at a time; 128M is enough for 1M rows.
max_execution_time
120 (recommended 60) — The cron worker self-limits, but a short cap truncates uploads.
upload_max_filesize
128M (recommended 128M) — Must be at least as large as your biggest .dta/.csv.
post_max_size
128M (recommended 128M) — Must be >= upload_max_filesize or uploads fail silently.

Configuration

config/config.php
Loaded, 6 sections.
Database password
Set (11 characters).
app_key
Still the placeholder.
Run `php -r "echo bin2hex(random_bytes(32));"` and paste the result.
cron key
Still the placeholder — anyone could trigger your worker.
Change `cron.key` in config/config.php, then update the cron URL in hPanel to match.
debug mode
Off (correct for a live site).
timezone
Asia/Dhaka — page and log timestamps now agree.

Storage

storage
Writable · 5 entries · 0755
storage/uploads
Writable · 0 entries · 0755
storage/columns
Writable · 2 entries · 0755
storage/logs
Writable · 1 entries · 0755
storage/exports
Writable · 0 entries · 0755
php-error.log
2,139 bytes. Newest entry 86442 minutes ago — old enough to predate your recent fixes; treat as history.
[16-Aug-2026 14:47:40 Asia/Dhaka] [ICCHQC] DB: Class "PDO" not found [16-Aug-2026 14:47:40 Asia/Dhaka] [ICCHQC] DB: Class "PDO" not found [16-Aug-2026 14:47:41 Asia/Dhaka] [ICCHQC] DB: Class "PDO" not found [16-Aug-2026 14:47:41 Asia/Dhaka] [ICCHQC] DB: Class "PDO" not found [16-Aug-2026 14:47:41 Asia/Dhaka] [ICCHQC] DB: Class "PDO" not found [16-Aug-2026 14:47:41 Asia/Dhaka] [ICCHQC] DB: Class "PDO" not found [16-Aug-2026 14:47:41 Asia/Dhaka] [ICCHQC] DB: Class "PDO" not found [16-Aug-2026 14:47:41 Asia/Dhaka] [ICCHQC] DB: Class "PDO" not found [16-Aug-2026 14:47:41 Asia/Dhaka] [ICCHQC] DB: Class "PDO" not found [16-Aug-2026 14:47:42 Asia/Dhaka] [ICCHQC] DB: Class "PDO" not found [16-Aug-2026 14:47:42 Asia/Dhaka] [ICCHQC] DB: Class "PDO" not found [16-Aug-2026 14:47:42 Asia/Dhaka] [ICCHQC] DB: Class "PDO" not found

Database

Connection
Connected in 0 ms · MySQL 11.8.9-MariaDB-log
Schema
20 qc_ tables found.
Users
1 account(s).
Projects
1 project(s).
Datasets
3 uploaded.
Runs
3 total.
Flags
0 stored.

Pipeline

Enrolment master list
Configured as `/home/u747125850/domains/icch.aljubaer.com/public_html/storage/uploads/1_20260816_204802_51507437.csv` but no file exists at /home/u747125850/domains/icch.aljubaer.com/public_html/storage/uploads/1_20260816_204802_51507437.csv.
Open the app → Stata sources → convert final_1049_participant_list.dta → "Use as enrolment master". That writes an absolute path, which is what the cron worker needs — it does not run from the same working directory as the web server.
Active runs
1 run(s) in progress; oldest sitting for 86033 minute(s).
A run stuck for more than 10 minutes almost always means the cron worker is not firing. Check the Cron section below.
Engine log
Run #3 (queued) has 0 characters of log.
The log is written by Pipeline::flushLog(). An empty log on a finished run means the worker crashed before its first flush — check storage/logs/php-error.log above.

Cron

Last worker tick
The worker has never completed a job.
hPanel → Advanced → Cron Jobs → add a job every minute: curl -s "https://icch.aljubaer.com/cron/worker.php?key=CHANGE_ME_CRON_KEY" >/dev/null 2>&1
Queued jobs
0 waiting.

Application

Engine files
8 files present.
Views
14 view files.
.htaccess
Present.

Security

config/ exposure
Protected by config/.htaccess.
HTTPS
This page was served over HTTPS.

Stata reader

Sample files
No .dta files found to test against.

Re-run checks Back to the app

This page reads configuration and runs read-only queries. It changes nothing.
Delete or password-protect it once the site is stable.