Troubleshooting
When something is not working, your first stop is the Diagnostics screen. Coduva checks your environment, scans the service logs, and explains the problem it finds in plain language; in most cases, it offers the fix with a single button.
Diagnostics screen
- Open the Diagnostics screen from the System group in the left menu. You can also reach it by typing "diagnostics" in the command palette opened with
Ctrl+K. - The checks run automatically when the screen opens. After you fix something, click Run checks to check again.
The summary at the top shows the overall status: "Environment is healthy" or "Needs attention: 2". Below it, you can see how many checks are OK, Info, Warning and Error, along with the time of the last run.
The results appear in two sections.
Checks — the state of your environment. Each row is marked OK, Info, Warning or Error; rows with problems are listed first:
| Check | What it looks at |
|---|---|
| Visual C++ runtime | Whether the Microsoft Visual C++ 2015–2022 (x64) runtime required by PHP is installed |
| Component folder path | Whether the C:\Coduva path contains non-ASCII characters |
| Components | Whether any component is missing |
| PHP command line | Whether PHP can run |
| Web server, database and HTTPS ports | Whether the ports are free or blocked |
| hosts file | Whether all project addresses are in the hosts file |
| Local certificate authority | Whether the CA is trusted by Windows |
| Other local servers | Whether WampServer, XAMPP or Laragon is running |
| Disk space | Whether the component drive has enough free space |
| Windows Defender | Whether real-time protection may be slowing down PHP |
Some rows appear only when they are relevant: the HTTPS port row appears only if another program is holding port 443, the certificate authority row only if a project uses HTTPS, the other local servers row only if one of them is running, and the Windows Defender row only if real-time protection is on.
Next to the problem rows, a fix button appears:
| Button | What it does |
|---|---|
| Install components | Opens the Control center; you start the installation from there |
| Sync hosts file | Syncs the hosts file immediately (requires UAC approval) and runs the checks again |
| Trust | Adds the certificate authority to the trusted certificates and runs the checks again |
| Change ports | Opens the Settings screen |
| Download Visual C++ | Downloads Microsoft's Visual C++ installer package in the browser |
Log findings — known error patterns recognized in the Nginx, PHP, MariaDB, WordPress and Laravel logs. For each finding, it shows what happened, why, how to fix it, and how many times it was seen. For all rules, see the Diagnostics rules page.
Health report
If you cannot solve the problem, click Create health report at the top of the Diagnostics screen (the same command is also in the Ctrl+K palette). Coduva writes a summary of the checks, the log findings and the installed components to a Markdown file. When you create the report with the button, the file path appears in the notification ("Report saved: …"):
%APPDATA%\Coduva\reports\saglik-raporu-<time>.mdYou can share this file when you ask for support. Coduva masks the password and token values it writes to logs and the event record; still, take a look at the file before you share it.
Port 80 in use
Symptom: The Nginx card says Port in use, and the service does not start. The status bar at the bottom shows Port conflict, and the service dot in the sidebar is red.
The card states who is using the port. The most common causes are:
- Windows HTTP server (http.sys): IIS or the "World Wide Web Publishing Service" is running. If you do not use IIS, stop this service in the Services window (
services.msc) and set its startup type to Manual. - WampServer, XAMPP or Laragon: close that program.
- Another program: the card shows the program name and PID.
If you cannot close the program, move Coduva to another port:
- On the Control center, stop Nginx. While the service is running, the port field is locked.
- Under Settings → Network, enter
8080in the Nginx HTTP port field and click the Save button on the same row. - Start Nginx.
Project addresses will then include the port: http://magaza.test:8080/. For WordPress sites, you may need to update the address with Change URL.
If you want to see for yourself which process holds the port:
Get-NetTCPConnection -LocalPort 80 -State Listen | Select-Object OwningProcess
Get-Process -Id <PID>Port 443 in use
Symptom: You have a project that uses HTTPS and Nginx does not start; the notification says "Port in use: port 443 is in use". The Control center warns "HTTPS port 443 is also in use."
If a project uses HTTPS, Nginx requires port 443 to be free when it starts. In version 0.2.0, the HTTPS port cannot be changed; stop the program holding port 443 (usually IIS or another local server). If you need that program, turn HTTPS off for your projects temporarily; Nginx will then start with HTTP only. See Local HTTPS.
Port 3306 in use
Symptom: The MariaDB card says Port in use; the log shows Can't start server: Bind on TCP/IP port.
Another MySQL or MariaDB is running on the computer; most often, it is a separately installed MySQL service or another local server's database.
- If you do not use that database, stop its service.
- If you do use it, enter e.g.
3307in the MariaDB port field under Settings → Network and click the Save button on the same row. Change it while the service is stopped.
When the port changes, also update the port in your projects' connection settings: DB_HOST in wp-config.php for WordPress, and DB_PORT in .env for Laravel.
Port blocked
Symptom: The card says Port blocked: "Windows may have reserved it (Hyper-V or WSL excluded port range)."
On computers that use Hyper-V, WSL or Docker Desktop, Windows reserves some port ranges for itself. These ports may look free, but no program can listen on them. To see the reserved ranges:
netsh interface ipv4 show excludedportrange protocol=tcpThe simplest solution is to choose a port outside these ranges under Settings → Network.
Advanced: refreshing reserved port ranges
These ranges usually change when the winnat service is restarted. In a PowerShell window opened as administrator, you can run net stop winnat followed by net start winnat. This briefly interrupts WSL and Docker network connections.
Missing Visual C++
Symptom: PHP does not run; the Visual C++ runtime or PHP command line check reports an error; the log shows PHP Startup: Unable to load dynamic library.
The Windows builds of PHP depend on the Microsoft Visual C++ 2015–2022 (x64) runtime. Click the Download Visual C++ button on the check row, install the package, and restart Coduva.
If the problem only persists with a specific extension, turn that extension off on the PHP & Node screen.
Windows Defender slowing things down
Symptom: Pages load slowly, composer install takes a long time, or you get a "Permission denied" error.
Real-time protection scans every file that PHP reads. In WordPress and Laravel projects, which contain thousands of small files, this causes a significant slowdown. Consider adding the component folder and your project folders to the exclusion list:
- Open Windows Security → Virus & threat protection → Manage settings.
- Under Exclusions, select Add or remove exclusions.
- Add
C:\Coduvaas a Folder, along with the folder where you keep your projects.
The same action from an administrator PowerShell:
Add-MpPreference -ExclusionPath "C:\Coduva"Warning
Excluded folders are not scanned. Add only folders that contain code you trust.
Address does not open
Symptom: The browser says "This site can't be reached" for name.test.
- Open the Local domains screen. If the text "The hosts file does not match the projects." appears at the top, or the project's row shows not in hosts, click the Sync hosts file button at the top right of the screen and grant the UAC approval.
- If the approval window does not appear or the operation fails, a security program may be protecting the
hostsfile. Allow Coduva in that program's settings. - If the web server runs on a port other than 80, include the port in the address:
http://name.test:8080/. - Check on the Control center that Nginx is in the Running state.
Coduva changes only its own marked section of the hosts file; it does not touch other lines in the file.
Browser shows an HTTPS warning
Symptom: "Your connection is not private" or NET::ERR_CERT_AUTHORITY_INVALID.
Coduva's certificate authority is not trusted yet. On the Local HTTPS screen, click Trust and click Yes in the Windows security window. If you use Firefox, an additional setting is required. See Local HTTPS.
Service starts but stops immediately
- If the start fails, a The action could not be completed notification appears in the lower right corner, with the cause of the error and the last lines of the service log.
- From the left-click menu of the tray icon, you can open the error log of the relevant service.
- The Activity feed on the Control center and the Recent events section under Settings list service start, stop and crash events.
- If a PHP process crashes, Coduva's watchdog restarts it and records this in the event log as "Crashed PHP process restarted". If the same event keeps repeating, check the PHP error log.
After an update
When Coduva moves to a new version, on its first launch it rewrites the Nginx, PHP and phpMyAdmin configuration and the localhost welcome page with the new templates (if you edited the welcome page yourself, it is left as it is), and it reloads the running Nginx without interruption; you do not need to restart any services.
If the event log shows Could not apply the new version's configuration, the reload has failed and Nginx keeps running with the old configuration. Restart Nginx with Restart on the Control center; if the error persists, check the Diagnostics screen.
Application errors
| Message | Solution |
|---|---|
Allowed memory size of ... exhausted | PHP & Node → increase the Memory limit value (e.g. 1G) |
Maximum execution time of ... exceeded | Increase the Execution time value, or move the long task to a queue |
Call to undefined function | Turn on the relevant PHP extension |
Error establishing a database connection | Start MariaDB; in wp-config.php, DB_HOST must be 127.0.0.1:<port> |
No application encryption key has been specified | Run artisan key:generate from the Laravel tools |
For the full list of ports, see the Ports page; for all diagnostic rules, see the Diagnostics rules page. If your question is not answered here, see the FAQ.