Error map
open() failed (13: Permission denied) Nginx: [error] open() "/home/user/site/index.html" failed (13: Permission denied), 403 Forbidden
Nginx / Apache · layer 3, Edge & web server
Centre: this error. First ring: errors it is linked with (12). Outer ring: what those are linked with. Colours show the layer of a request each error belongs to. Click any dot to re-centre the map on it; hover to follow its connections. The centre dot opens the error page.
Directly related (12)
HTTP 403 Forbidden
The server understood the request but refuses to authorize it — you (or the server process) are not allowed to access this resour…
WordPress: 403 Forbidden on wp-admin, wp-login.php or admin-ajax.php
The server or a security layer refused access to WordPress admin URLs — file permissions, a security plugin/WAF rule, ModSecurity…
Warning: session_start(): open(/var/lib/php/sessions/sess_x, O_RDWR) failed: Permission denied
PHP can’t write session files to the configured session.save_path.
user is not in the sudoers file. This incident will be reported.
Your account isn’t allowed to use sudo.
Error: listen EACCES: permission denied 0.0.0.0:80
Node isn’t allowed to bind that port — ports below 1024 need root on Linux/macOS, and some Windows ports are reserved.
SELinux is preventing ... / avc: denied { read } for pid=... (permission denied despite correct permissions)
SELinux blocked the access — file permissions look fine, but the file’s security context or a boolean doesn’t allow the service t…
Error: EPERM: operation not permitted, rename / unlink
The OS refused a file operation — on Windows usually because another process (antivirus, editor, indexer) has the file locked.
Error: spawn EACCES
Node tried to execute a file that isn’t executable (missing +x permission) or isn’t a program.
Laravel: The stream or file "storage/logs/laravel.log" could not be opened in append mode: Failed to open stream: Permission denied
The web server can’t write to Laravel’s storage or bootstrap/cache directories.
WARNING: UNPROTECTED PRIVATE KEY FILE! Permissions 0644 for 'key.pem' are too open
SSH refuses to use a private key that other users can read; it must be readable only by you (chmod 600).
WordPress: Sorry, you are not allowed to access this page.
Your user role lacks the capability for that admin screen — or the database table prefix / user capabilities are out of sync afte…
Nginx/Apache: ModSecurity: Access denied with code 403 (phase 2). Matched "Operator GE matched 5 at TX:anomaly_score"
The ModSecurity WAF (OWASP Core Rule Set) blocked the request as suspicious.
Two steps away (36)
Git: Permission denied (publickey). fatal: Could not read from remote repository.
SSH authentication to GitHub/GitLab/Bitbucket failed — no key, wrong key, or the key isn’t added to your account.
AWS S3: AccessDenied (403) when calling GetObject / PutObject
An IAM policy, bucket policy, ACL/ownership setting, Block Public Access or KMS key policy denied the S3 request.
Linux: Permission denied
Your user (or the service user) lacks read/write/execute permission on a file, directory or one of its parents.
Webhook signature verification failed (Stripe, Razorpay, GitHub…)
Your endpoint computed a different HMAC signature than the one the provider sent, so the webhook is rejected.
Cloudflare Error 1020: Access Denied
A Cloudflare firewall/WAF custom rule blocked the request — the visitor’s IP, country, user agent or request pattern matched a bl…
FastCGI sent in stderr: "Primary script unknown"
Nginx passed a script path to PHP-FPM that PHP-FPM couldn’t find — usually a wrong SCRIPT_FILENAME or root.
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
The docker CLI can’t talk to the Docker engine — it isn’t running, or your user can’t access the socket.
AWS: ExpiredToken — The security token included in the request is expired
Temporary AWS credentials (STS/SSO/assumed role) have expired.
HTTP 401 Unauthorized
The request has no valid authentication credentials — you need to log in or send a valid token.
E: Could not get lock /var/lib/dpkg/lock-frontend — is another process using it?
apt can’t run because another package operation (often automatic updates) holds the dpkg lock.
java.nio.file.AccessDeniedException: /path
The OS denied a file operation to the Java process.
NotAllowedError: Failed to execute 'writeText' on 'Clipboard': Document is not focused.
The Clipboard API refused to write — the page isn’t focused, there was no user gesture, or the context isn’t secure.
Error: listen EADDRINUSE: address already in use :::3000
Another process is already listening on that port.
Docker: Bind for 0.0.0.0:80 failed: port is already allocated
Another container or host process already publishes that host port.
OAuth 2.0 Error: invalid_scope / insufficient_scope
The requested scope is unknown or not allowed for this client — or the token lacks the scope the API endpoint requires.
Permission denied writing to a mounted volume inside a Docker container
The process inside the container runs as a user (UID) that doesn’t own the bind-mounted host folder, so reads/writes fail with EA…
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! (ssh host key changed)
The server’s SSH host key differs from the one saved in ~/.ssh/known_hosts — usually because the server was rebuilt or the IP was…
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY
apt can’t verify a repository’s signature because the repo’s signing key isn’t installed (or has expired/rotated).
npm ERR! code EACCES — permission denied
npm can’t write to a directory — usually global installs into a root-owned folder.
Error: EISDIR: illegal operation on a directory, read
A file API (readFile, writeFile, createReadStream) was given a directory path.
Error: ENOTDIR: not a directory
A path treats a file as if it were a directory (e.g. file.txt/child).
Error: ENOENT: no such file or directory
A file or directory the program tried to open doesn’t exist at that path.
Error: write EPIPE
Node wrote to a pipe or socket whose other end was already closed.
RangeError [ERR_CHILD_PROCESS_STDIO_MAXBUFFER]: stdout maxBuffer length exceeded
child_process.exec/execSync produced more output than its buffer allows (default 1 MB).
Warning: include(x.php): Failed to open stream: No such file or directory
PHP couldn’t open a file for include/require/fopen — wrong path, missing file, or no permission.
Laravel: No application encryption key has been specified.
Laravel’s APP_KEY is missing, so it can’t encrypt sessions and cookies.
Laravel: 419 Page Expired (CSRF token mismatch)
Laravel rejected a POST because the CSRF token was missing, expired or didn’t match the session.
ssh: connect to host x port 22: Connection refused
The server answered, but nothing is listening on the SSH port — sshd isn’t running, it uses another port, or a firewall actively…
Received disconnect: Too many authentication failures
Your SSH agent offered too many keys before the right one, and the server cut the connection (MaxAuthTries, default 6).
client_loop: send disconnect: Broken pipe (SSH session drops when idle)
The SSH connection was cut — usually an idle timeout on a NAT router, firewall or the server, sometimes a network change.
WordPress: Error Establishing a Database Connection
WordPress can’t connect to its MySQL/MariaDB database with the credentials in wp-config.php, or the database server is down.
WordPress: There Has Been a Critical Error on This Website
A PHP fatal error (usually from a plugin or theme) stopped WordPress; the real error is in the debug log or recovery-mode email.
Upload error: File type not allowed / unsupported file type
The upload was rejected because the file’s type — extension, MIME type or actual content — isn’t on the allowed list.
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Nginx (or another server) can’t listen on the port because another process already holds it — often Apache, another Nginx, or a s…
API/app requests get 403 with cf-mitigated: challenge (Bot Fight Mode / challenge on non-browser clients)
Cloudflare is answering API calls, webhooks or mobile-app requests with a challenge page (HTML 403) because bot protection treats…
Nginx: upstream timed out (110: Connection timed out) while reading response header from upstream
Nginx waited longer than proxy_read_timeout (60 s default) for the backend (app server, PHP-FPM) to respond, then returned 504.
Map another error
Popular: 500403400ORA-009331064Critical errorFileNotFoundException assemblyTypeError