Troubleshooting
Common errors, known issues, and fixes.
DevStackBox - Error Reference
Every known error message, what it means, and how to fix it.
When you see an error in the UI or logs, find it here first.
Service Errors
binary not found at <path>
Meaning: DevStackBox cannot find the service executable.
Cause: The service binary is missing from the expected path, or the app is looking in the wrong directory.
Fix:
- Open the Debug panel (dev builds only) - it shows what path was resolved
- Check that
apache/bin/httpd.exe,mysql/bin/mysqld.exe, orphp/8.3/php.exeexist - If they are missing, re-run
scripts/prepare-binaries.ps1or copy from your XAMPP installation - If the path looks wrong (pointing to
C:\xampp\htdocs\DevStackBoxin a production install), seeadvanced/troubleshootingISSUE-009
Port 80 is not available
Meaning: Something else is already using port 80.
Fix: See advanced/environment section "Port 80 Already in Use"
Port 3306 is not available
Meaning: MySQL cannot start because port 3306 is taken.
Fix: See advanced/environment section "Port 3306 Already in Use"
Apache failed to start (exit code: 1)
Meaning: Apache exited immediately after launch.
Likely causes:
- Port 80 is in use (most common)
httpd.confhas a syntax error- A required module DLL is missing
- 32-bit Apache binary on a 64-bit system (architecture mismatch)
Diagnose:
- Check
logs/error.logfor the specific Apache error - Run manually to see output:
apache\bin\httpd.exe -t(config test)
Architecture mismatch fix: See advanced/troubleshooting
MySQL failed to start
Meaning: mysqld.exe exited immediately after launch.
Likely causes:
- Port 3306 is in use
mysql/data/is corrupt or missingmy.cnfhas invalid settings- A previous MySQL session left a lock file
Diagnose:
- Check
mysql/data/<hostname>.errfor the MySQL error log - Look for
[ERROR]lines
Fix lock file:
Remove-Item "mysql\data\<hostname>.pid" -ErrorAction SilentlyContinueMySQL stopped unexpectedly
Meaning: MySQL was running and then disappeared without being stopped from the UI.
Likely causes:
- Windows killed the process due to memory pressure
- MySQL data directory corrupted
- InnoDB crash recovery triggered and failed
Fix:
- Check
mysql/data/<hostname>.errfor[ERROR]orShutdownmessages - If InnoDB crash recovery fails, restore from backup (
config-backups/) - Restart MySQL - it usually recovers on its own
Config Errors
Failed to read config file
Meaning: DevStackBox cannot open the config file for reading.
Likely cause: File does not exist, or the app has no permission to read it.
Fix:
- Verify the file exists at
config/php.ini(orconfig/httpd.conf,config/my.cnf) - If missing, use "Restore Default" option in the Config Editor
- If it exists, check file permissions
Failed to save config file
Meaning: The config change could not be written to disk.
Likely causes:
- File is read-only
- App was installed to
C:\Program Files\and lacks write permission without elevation - Antivirus is blocking the write
Fix:
- Check file properties → uncheck "Read-only"
- If installed to Program Files, run DevStackBox as Administrator (or reinstall to
C:\dsb) - Check antivirus logs for blocked writes
Config backup failed
Meaning: Could not create a backup in config-backups/.
Fix:
- Check that
config-backups/directory exists - Check disk space
- Check write permissions on the
config-backups/directory
PHP Errors
PHP version switching failed
Meaning: switch_php_version command could not create the directory junction.
Likely causes:
cmd.exewas not found (unusual, but possible in restricted environments)- Insufficient permissions to create directory junctions
- Target PHP version not downloaded yet
Fix:
- Verify the target version exists:
php\8.1\php.exe - Run DevStackBox as Administrator if junction creation fails
- Manually create the junction:
cmd /C mklink /J php\current php\8.1
PHP binary not found
Meaning: php/8.3/php.exe (or other version) does not exist.
Fix:
- Use the PHP Version Selector to install the missing version
- Note: PHP download is currently a stub - see
advanced/troubleshootingISSUE-003
Installer Errors
MSI error 1603 (Generic installation failure)
Common causes:
- Previous installation not fully cleaned up
- Missing VC++ Redistributable
- Antivirus blocking installation
Fix:
- Uninstall any previous DevStackBox version first
- Install Microsoft Visual C++ Redistributable 2022 (x64)
- Temporarily disable antivirus during install
See docs/MSI_TROUBLESHOOTING.md for more detail.
Cannot find the DevStackBox installation path
Meaning: After MSI install, the app cannot find its own binary files.
Cause: MSI installed to an unexpected location, or the path fallback list does not include your install path.
Fix:
- Check where the MSI installed: Start Menu → DevStackBox → right-click → "Open file location"
- Verify
apache/,mysql/,php/directories are in that folder - If not, re-run the installer and choose the default path
UI / Frontend Errors
Blank page or white screen on startup
Meaning: React app failed to load.
Fix:
- Open DevTools (
Ctrl+Shift+I) - Check the Console tab for JavaScript errors
- Common cause: missing asset file - re-run
pnpm install && pnpm tauri build
Unknown command: <command_name>
Meaning: Frontend is calling a Tauri command that does not exist in the backend.
Likely cause: Command was renamed in Rust but the constant in src/lib/commands.ts was not updated.
Fix:
- Check
TAURI_COMMANDSinsrc/lib/commands.ts - Check
invoke_handlerinsrc-tauri/src/lib.rs - Ensure the name matches exactly (case-sensitive)
Translation key shows as raw string (e.g., services.startButton)
Meaning: i18next could not find the translation for that key.
Fix:
- Check
locales/en.jsonfor the key path - Ensure the key exists with the exact nested structure
- Check
locales/hi.jsonhas the same key (both files must be in sync)
Build Errors
pnpm tauri build fails with "version mismatch"
All three version files must be identical. See development/release-process Step 2.
GitHub Actions build fails
Most common causes:
- Emoji characters in
.ymlfile (PowerShell encoding issue) - remove all emoji - Version format with hyphen/letters (MSI rejects it) - use clean semver
- Dependency download failure - re-run the job
Getting More Help
- Check
advanced/troubleshooting- your issue may be documented there - Use the Debug panel in dev builds to inspect path resolution
- Check the relevant log file in
logs/ - Open a GitHub Issue: DevStackBox/DevStackBox issues
- Include DevStackBox version
- Include OS version
- Include the exact error message
- Include contents of the relevant log file
DevStackBox - Known Issues and Technical Debt
Single source of truth for open bugs, release blockers, and technical debt that should be considered before adding new features.
Read this before coding. Fix critical and high-priority issues before feature work unless the feature is required to resolve the issue.
Priority Levels
- CRITICAL - Causes crashes, data loss, or completely broken features.
- HIGH - Blocks release quality, distribution, updates, or important workflows.
- MEDIUM - Works with limitations or has a known workaround.
- LOW - Minor cleanup, documentation, or polish.
Critical Issues
No open critical issues.
High Priority Issues
ISSUE-011: Auto-Updater Signing Keys Not Configured
Priority: HIGH
Files: src-tauri/tauri.conf.json, GitHub repository secrets
Status: Keys generated; GitHub Secrets still need the private key pasted in
Description:
tauri-plugin-updater is installed, auto-updater.tsx is wired up, and tauri.conf.json points to the GitHub Releases latest.json endpoint.
Work done:
- Key pair generated with
pnpm tauri signer generate --ci. - Private key saved to
%USERPROFILE%\.tauri\devstackbox.key(local machine, not committed). - Public key updated in
src-tauri/tauri.conf.json. - Local build signing configured via the
TAURI_SIGNING_PRIVATE_KEY_PATHuser env var. - Workflow updated to use Tauri v2 env var names:
TAURI_SIGNING_PRIVATE_KEYandTAURI_SIGNING_PRIVATE_KEY_PASSWORD.
Remaining step: Paste the private key content into GitHub repository secrets:
- Go to
https://github.com/DevStackBox/DevStackBox/settings/secrets/actions. - Add secret
TAURI_SIGNING_PRIVATE_KEY- value is the full content of%USERPROFILE%\.tauri\devstackbox.key. TAURI_SIGNING_PRIVATE_KEY_PASSWORDcan be left empty (key has no password).- Do not commit the private key file or paste it anywhere in the repo.
ISSUE-016: Clean Installer Smoke Test Still Pending
Priority: HIGH
Files: src-tauri/tauri.conf.json, installer bundle output, bundled apache/, php/, mysql/, phpmyadmin/
Status: Release verification pending
Description: The development workspace is working, but the MSI and NSIS installers still need clean-machine validation before v0.1.7 can be treated as release-ready.
Required checks:
- Install on a clean Windows 11 machine or VM.
- Verify Apache, PHP 8.3, MySQL, and phpMyAdmin work with no internet access.
- Verify user data is created under
%LOCALAPPDATA%\DevStackBox\. - Verify app updates do not touch
www/,mysql-data/,logs/,config/, orbackups/. - Test both
C:\dsbandC:\Program Files\DevStackBoxinstall paths.
ISSUE-017: cargo clippy -D warnings Fails on Current Toolchain
Priority: HIGH
Files: src-tauri/src/commands/terminal.rs, src-tauri/src/utils/paths.rs
Status: RESOLVED
Description:
cargo check passes, but cargo clippy --all-targets -- -D warnings failed under the current Rust toolchain because clippy reported two warnings as errors:
TerminalSessions::new()lacked a matchingDefaultimplementation.utils::pathsmanually stripped the\\?\prefix instead of usingstrip_prefix.
Fix applied:
- Added
impl Default for TerminalSessions { fn default() -> Self { Self::new() } }interminal.rs. - Replaced manual prefix slicing with
raw.strip_prefix(r"\\?\")inpaths.rs. cargo clippy --all-targets -- -D warningsnow passes cleanly.
Medium Priority Issues
ISSUE-015: phpMyAdmin 5.2.1 PHP 8.4 Compatibility
Priority: MEDIUM
Files: phpmyadmin/vendor/thecodingmachine/safe/, src-tauri/src/commands/php.rs
Status: Mitigated by ini patch; not fully resolved
Description:
phpMyAdmin 5.2.1 bundles thecodingmachine/safe, which emits many PHP 8.4 E_DEPRECATED notices for implicitly nullable parameters. Under CGI mode these notices previously flooded Apache logs, slowed phpMyAdmin, and could corrupt CGI headers when html_errors was enabled.
Current mitigation in patch_php_ini():
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICThtml_errors = Offsession.sid_lengthandsession.sid_bits_per_characterare commented out for PHP 8.4 startup compatibility.
Permanent fix: Upgrade bundled phpMyAdmin to 5.2.2 or later.
Low Priority Issues
ISSUE-014: First-Run www Seed Must Be Present in Installer
Priority: LOW
File: src-tauri/src/commands/apache.rs
Status: Partially mitigated
Description:
seed_www_dir copies default files from the installed www/ directory to the user data www/ directory on first run. If the installer ever omits the source www/ seed files, Apache can fall back to an empty document root and show a directory listing.
Fix:
During installer verification, confirm the bundled www/ seed files are present and copied into %LOCALAPPDATA%\DevStackBox\www\ on first launch.
Fixed Issues Reference
| Issue | Fix | Version |
|---|---|---|
MSI version format 0.1.0-alpha.6 broke MSI | Changed to clean semver | v0.1.6 |
globals.css accidentally deleted | Restored | v0.1.6 |
main.tsx accidentally deleted | Restored | v0.1.6 |
| GitHub Actions emoji encoding broke PowerShell | Removed emoji from workflow files | v0.1.6 |
Duplicate ServiceStatus type in 3 files | Consolidated to src/types/services.ts | v0.1.6 |
Apache get_apache_status missing from Rust | Added command | v0.1.6 |
| Config management commands missing | Added config commands | v0.1.6 |
service_manager.rs dead code | Deleted | v0.1.6 |
lib.rs was too large | Split into commands/, utils/, and types.rs | v0.1.6 |
| Service status had multiple sources of truth | Removed status globals; status uses OS process checks | v0.1.6 |
switch_php_version could not call mklink directly | Uses cmd /C mklink /J | v0.1.6 |
| Dev-machine path used as production fallback | Removed C:\xampp\htdocs\DevStackBox from production fallback paths | v0.1.6 |
DebugPanel visible in production | Guarded behind development mode | v0.1.6 |
| Raw frontend command strings | Centralized in src/lib/commands.ts; no raw safeInvoke("...") matches found | v0.1.7-dev |
localhost 500 on PHP 8.4 due to session.sid_* deprecations | patch_php_ini() comments out deprecated directives | v0.1.7-dev |
| phpMyAdmin timeout or 500 on PHP 8.4 due to deprecation flood | patch_php_ini() sets compatible error_reporting and disables html_errors | v0.1.7-dev |
| localhost and phpMyAdmin broke after adding a vhost | configVersion 7 template keeps localhost VirtualHost and phpMyAdmin Alias together | v0.1.7-dev |
Manual Apache 64-bit Installation Guide
Download Steps
- Visit ApacheLounge: https://www.apachelounge.com/download/
- Download
httpd-2.4.62-240904-win64-VS17.zip(or latest VS17 64-bit version) - Extract to a temporary folder
- Copy the
Apache24folder contents to replace your currentapachefolder
PowerShell Commands
# After downloading to Downloads folder:
cd "C:\box\DevStackBox"
# Backup current Apache
if (Test-Path "apache") {
Rename-Item "apache" "apache-backup-32bit"
}
# Extract downloaded ZIP and copy Apache24 contents to apache folder
# Then test with:
pnpm tauri devVerification
After replacement, the error should change from "Unsupported 16-Bit Application" to either:
- Apache starts successfully
- A different error message (configuration issue)
Alternative
If manual Apache download is difficult, DevStackBox can detect and guide users through the correct Apache installation.