Hosting diagnostics
FAILGenerated 2026-11-06T14:42:31+01:00 in 1942 ms. 46 ok 11 warn 1 fail 15 info · JSON · without HTTP probes · shop
This page is a test instrument: it is public and reveals the environment. Remove the route from a real shop.
PHP runtime
| Status | Check | Value | Why it matters |
|---|---|---|---|
| warn | PHP version | 8.1.2-1ubuntu2.28 |
Runs Laravel 10, which is end of life with unpatched advisories. Laravel 11/12 need PHP 8.2+, and the hosting offers no version choice. |
| info | SAPI | fpm-fcgi |
Served by PHP-FPM, as on a WAYHOST php site. |
| info | Process user | mbankole3 (uid 1006) |
The pool runs as the hosting account, so the app can write wherever the account can. |
| ok | Required extensions | ctype, curl, dom, fileinfo, filter, gd, hash, json, mbstring, openssl, pcre, pdo, pdo_mysql, session, tokenizer, xml |
Everything Laravel 10 and this app need is loaded. |
| warn | Extension bcmath | missing |
Money/decimal maths (brick/money, many payment SDKs) and some UUID libraries need it. |
| warn | Extension intl | missing |
Number/date localisation, Str::of()->...->ucwords on some locales, Laravel 11 Number helper. |
| ok | Extension zip | loaded |
Excel/zip exports (maatwebsite/excel, phpspreadsheet). |
| ok | Extension exif | loaded |
Reading photo orientation (intervention/image) before resizing. |
| warn | Extension redis | missing |
phpredis for cache/queue/session on Redis; the hosting has no Redis server either. |
| warn | Extension pdo_sqlite | missing |
SQLite databases, used by many test setups and small apps. |
| ok | Extension sodium | loaded |
Modern crypto (argon2id via libsodium, paseto, some JWT libs). |
| warn | Extension pcntl | missing |
Signals for queue:work timeouts; never available under FPM anyway. |
| warn | Extension imagick | missing |
Higher quality image processing; GD is the only option here. |
| info | All loaded extensions | Core, date, libxml, openssl, pcre, zlib, filter, hash, json, Reflection, SPL, session, standard, sodium, cgi-fcgi, mysqlnd, PDO, xml, calendar, ctype, curl, dom, mbstring, FFI, fileinfo, ftp, gd, gettext, iconv, exif, mysqli, pdo_mysql, Phar, posix, readline, shmop, SimpleXML, sockets, sysvmsg, sysvsem, sysvshm, tokenizer, xmlreader, xmlwriter, xsl, zip, Zend OPcache |
What this pool actually has, for comparison with other hosts. |
| ok | open_basedir | /home/mbankole3/web:/tmp |
The project is inside it. Anything outside (e.g. /usr/bin/php for the scheduler, /etc, /proc) is invisible to PHP. |
| ok | disable_functions | (none) |
symlink(), proc_open() and set_time_limit() are available. |
| ok | OPcache | enabled |
Compiled PHP is cached between requests. |
| ok | memory_limit | 256M |
Enough for Laravel and a GD thumbnail of a large photo. |
| warn | max_execution_time | 60s |
Long jobs run inside web requests here (no worker, no cron). /_ops raises it with set_time_limit(); nginx still cuts at fastcgi_read_timeout (60s by default). |
| ok | upload_max_filesize / post_max_size | 64M / 64M |
Covers the app's own image limit (4096 KB). |
| info | user_ini.filename | .user.ini |
If set, a .user.ini in the site root can raise upload_max_filesize / memory_limit (PHP_INI_PERDIR values), not open_basedir. |
Application
| Status | Check | Value | Why it matters |
|---|---|---|---|
| warn | Laravel | 10.50.4 |
Laravel 10 stopped receiving security fixes in February 2025. Every 10.x has open advisories, so Composer refuses it unless they are ignored explicitly (see composer.json). Upgrading needs PHP 8.2+. |
| ok | APP_KEY | set |
Cookies, sessions and encrypted values work. |
| ok | APP_DEBUG | false |
Errors are logged, not displayed. |
| info | APP_ENV | production |
migrate and db:seed need --force outside "local"; /_ops passes it. |
| ok | APP_URL | https://mbankole3-2.shared-fi01-001.hosting.wayhost.cloud |
Matches the address this page was requested on. |
| warn | ASSET_URL | https://mbankole3-2.shared-fi01-001.hosting.wayhost.cloud |
The hosting serves the project root, not public/. Without ASSET_URL=<APP_URL>/public, CSS and images 404. |
| info | Document root | /home/mbankole3/web/mbankole3-2.shared-fi01-001.hosting.wayhost.cloud/public |
Points at public/: the safe layout. |
| info | Config / route / view caches | config cached, routes cached, events not cached |
Without SSH, caches are built and cleared from /_ops. A cached config ignores later .env edits until "config:cache" runs again. |
Filesystem
| Status | Check | Value | Why it matters |
|---|---|---|---|
| ok | storage/app/public | writable |
Owned by the account the pool runs as. |
| ok | storage/framework/cache | writable |
Owned by the account the pool runs as. |
| ok | storage/framework/sessions | writable |
Owned by the account the pool runs as. |
| ok | storage/framework/views | writable |
Owned by the account the pool runs as. |
| ok | storage/logs | writable |
Owned by the account the pool runs as. |
| ok | bootstrap/cache | writable |
Owned by the account the pool runs as. |
| ok | .env | present, writable |
key:generate can store the key. |
| ok | public/storage | symlink -> /home/mbankole3/web/mbankole3-2.shared-fi01-001.hosting.wayhost.cloud/storage/app/public |
Uploaded images are served from storage/app/public. |
| info | Free space on the filesystem | 168.9 GB |
Filesystem-wide figure. The account quota is lower and PHP cannot read it. |
| ok | Temporary directory | /tmp |
Uploads and Symfony temp files land here (allowed by open_basedir). |
Database
| Status | Check | Value | Why it matters |
|---|---|---|---|
| ok | Connection | mysql://mbankole3_shop@localhost (socket /run/mysqld/mysqld.sock)/mbankole3_shop |
Connected in 4 ms (Localhost via UNIX socket). |
| info | Server version | 5.5.5-10.6.23-MariaDB-0ubuntu0.22.04.1 |
MariaDB 10.6 is what a WAYHOST node installs. |
| ok | Migrations | 7 applied, 0 pending |
Schema is up to date. |
| info | Per-user limits | max_user_connections=30, max_statement_time=60s |
The hosting caps each database user (10 connections, 60 s per statement by default). With pm.max_children=10, 10 busy workers use every connection. |
Queue and scheduler
| Status | Check | Value | Why it matters |
|---|---|---|---|
| info | Queue driver | database |
Jobs wait in a table until a worker runs. The hosting runs none: /_ops "queue:work" is the worker. |
| ok | Pending jobs | 0 |
Nothing waiting. |
| ok | Failed jobs | 0 |
No job has exhausted its retries. |
| info | Last job processed | 111 min ago (App\Domain\Orders\Jobs\SendOrderConfirmation) |
Recorded by a Queue::after listener. |
| ok | Scheduler heartbeat | 27s ago via cli, previous beat 60s earlier |
A system cron drives the scheduler every minute. |
| fail | PHP CLI binary seen from PHP | not found |
From FPM under open_basedir, PHP cannot see /usr/bin/php, so schedule:run builds "'' artisan ..." and every ->command() event fails. /_ops uses an in-process runner instead. |
Cache, session, mail, logs
| Status | Check | Value | Why it matters |
|---|---|---|---|
| ok | Cache (file) | read/write ok |
File cache under storage/framework/cache. No Redis or Memcached on the hosting. |
| info | Session driver | file (/home/mbankole3/web/mbankole3-2.shared-fi01-001.hosting.wayhost.cloud/storage/framework/sessions) |
Garbage collection runs on a 2/100 lottery inside requests, since no cron can do it. |
| warn | Mail driver | log -> channel mail |
Mails are written to storage/logs, not delivered. The hosting provides no SMTP relay; use an external SMTP provider for real mail. |
| info | Log channel | daily -> /home/mbankole3/web/mbankole3-2.shared-fi01-001.hosting.wayhost.cloud/storage/logs |
Daily files laravel-YYYY-MM-DD.log, a predictable name (see "Exposure"). |
Exposure (HTTP self-probes)
| Status | Check | Value | Why it matters |
|---|---|---|---|
| info | Probing | https://mbankole3-2.shared-fi01-001.hosting.wayhost.cloud |
Each line below is a real HTTP request to this address, without cookies. |
| ok | GET /.user.ini | 404 |
Not served (the PHP overrides of this site). |
| ok | GET /.env | 404 |
Not served (credentials (DB password, APP_KEY, OPS_TOKEN)). |
| ok | GET /storage/logs/laravel-2026-11-06.log | 404 |
Not served (the application log (stack traces, emails, SQL)). |
| ok | GET /storage/logs/mail-2026-11-06.log | 404 |
Not served (logged mails (customer names, emails, order contents)). |
| ok | GET /composer.lock | 404 |
Not served (exact dependency versions, i.e. which advisories apply). |
| ok | GET /vendor/composer/installed.json | 404 |
Not served (exact dependency versions). |
| ok | GET /composer.json | 404 |
Not served (project metadata). |
| ok | GET /artisan | 404 |
Not served (PHP source served as text (no .php extension, so it is not executed)). |
| ok | GET /storage/ | 403 |
Not served (a directory listing of storage/). |
| ok | GET /storage/app/invoices/LS-2026-000001.html | 404 |
Not served (a customer invoice (name, address, items): personal data). |
| ok | GET /storage/framework/cache/data/a9/59/a959f47ba815ca3976f7d8506b3dc525d5326335 | 404 |
Not served (a file-cache entry (path is sha1 of the key, so predictable)). |
| ok | GET /vendor/autoload.php | 404 |
Not executable from the web. |
| ok | GET /config/database.php | 404 |
Not executable from the web. |
| ok | GET /public/index.php | 404 |
Not executable from the web. |
| ok | GET /css/app.css | 200, 9536 bytes |
Served: the stylesheet (ASSET_URL). |
| ok | GET /storage/products/tasting-notebook-w6rxad.png | 200, 3203 bytes |
Served: an uploaded product image (public disk + storage link). |
| ok | POST 900 KB to /_health/echo | 200, PHP received 921600 bytes |
Request bodies of this size reach the app. |
| ok | POST 1536 KB to /_health/echo | 200, PHP received 1572864 bytes |
Request bodies of this size reach the app. |
| ok | POST 3072 KB to /_health/echo | 200, PHP received 3145728 bytes |
Request bodies of this size reach the app. |