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

Open the full error page →

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.

open() failed (13: Permission denied) — Nginx: [error] open() "/home/user/site/index.html" failed (13: Permission denied), 403 Forbidden (Nginx / Apache)open() fail…403 — HTTP 403 Forbidden (HTTP)403403 Forbidden wp-admin — WordPress: 403 Forbidden on wp-admin, wp-login.php or admin-ajax.php (WordPress)403 Forbidden wp-ad…session save path — Warning: session_start(): open(/var/lib/php/sessions/sess_x, O_RDWR) failed: Permission denied (PHP)session save pathsudoers — user is not in the sudoers file. This incident will be reported. (Linux)sudoerslisten EACCES — Error: listen EACCES: permission denied 0.0.0.0:80 (Node.js)listen EACCESavc: denied — SELinux is preventing ... / avc: denied { read } for pid=... (permission denied despite correct permissions) (Linux)avc: deniedEPERM — Error: EPERM: operation not permitted, rename / unlink (Node.js)EPERMspawn EACCES — Error: spawn EACCES (Node.js)spawn EACCESLaravel storage — Laravel: The stream or file "storage/logs/laravel.log" could not be opened in append mode: Failed to open stream: Permission denied (PHP)Laravel storageUNPROTECTED PRIVATE KEY FILE — WARNING: UNPROTECTED PRIVATE KEY FILE! Permissions 0644 for 'key.pem' are too open (Linux)UNPROTECTED PRIVATE…Not allowed — WordPress: Sorry, you are not allowed to access this page. (WordPress)Not allowedModSecurity: Access denied with code 403 — Nginx/Apache: ModSecurity: Access denied with code 403 (phase 2). Matched "Operator GE matched 5 at TX:anomaly_score" (Nginx / Apache)ModSecurity: Access…publickey — Git: Permission denied (publickey). fatal: Could not read from remote repository. (Git)publickeyAccessDenied — AWS S3: AccessDenied (403) when calling GetObject / PutObject (AWS)AccessDeniedEACCES — Linux: Permission denied (Linux)EACCESwebhook signature — Webhook signature verification failed (Stripe, Razorpay, GitHub…) (API)webhook signature1020 — Cloudflare Error 1020: Access Denied (Cloudflare)1020Primary script unknown — FastCGI sent in stderr: "Primary script unknown" (PHP)Primary script unkn…daemon — Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? (Docker)daemonExpiredToken — AWS: ExpiredToken — The security token included in the request is expired (AWS)ExpiredToken401 — HTTP 401 Unauthorized (HTTP)401dpkg lock — E: Could not get lock /var/lib/dpkg/lock-frontend — is another process using it? (Linux)dpkg lockAccessDeniedException — java.nio.file.AccessDeniedException: /path (Java)AccessDeniedExcepti…clipboard write blocked — NotAllowedError: Failed to execute 'writeText' on 'Clipboard': Document is not focused. (JavaScript)clipboard write blo…EADDRINUSE — Error: listen EADDRINUSE: address already in use :::3000 (Node.js)EADDRINUSEport is already allocated — Docker: Bind for 0.0.0.0:80 failed: port is already allocated (Docker)port is already all…invalid_scope — OAuth 2.0 Error: invalid_scope / insufficient_scope (Authentication)invalid_scopepermission denied (volume) — Permission denied writing to a mounted volume inside a Docker container (Docker)permission denied (…REMOTE HOST IDENTIFICATION HAS CHANGED — WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! (ssh host key changed) (Linux)REMOTE HOST IDENTIF…NO_PUBKEY — The following signatures couldn't be verified because the public key is not available: NO_PUBKEY (Linux)NO_PUBKEYEACCES — npm ERR! code EACCES — permission denied (npm)EACCESEISDIR — Error: EISDIR: illegal operation on a directory, read (Node.js)EISDIRENOTDIR — Error: ENOTDIR: not a directory (Node.js)ENOTDIRENOENT — Error: ENOENT: no such file or directory (Node.js)ENOENTEPIPE — Error: write EPIPE (Node.js)EPIPEmaxBuffer exceeded — RangeError [ERR_CHILD_PROCESS_STDIO_MAXBUFFER]: stdout maxBuffer length exceeded (Node.js)maxBuffer exceededfailed to open stream — Warning: include(x.php): Failed to open stream: No such file or directory (PHP)failed to open stre…No application encryption key — Laravel: No application encryption key has been specified. (PHP)No application encr…419 Page Expired — Laravel: 419 Page Expired (CSRF token mismatch) (PHP)419 Page Expiredssh port 22 Connection refused — ssh: connect to host x port 22: Connection refused (Linux)ssh port 22 Connect…Too many authentication failures — Received disconnect: Too many authentication failures (Linux)Too many authentica…client_loop: send disconnect: Broken pipe — client_loop: send disconnect: Broken pipe (SSH session drops when idle) (Linux)client_loop: send d…DB connection — WordPress: Error Establishing a Database Connection (WordPress)DB connectionCritical error — WordPress: There Has Been a Critical Error on This Website (WordPress)Critical errorfile_type_not_allowed — Upload error: File type not allowed / unsupported file type (API)file_type_not_allow…bind() failed (98: Address already in use) — nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) (Linux)bind() failed (98: …cf-mitigated: challenge — API/app requests get 403 with cf-mitigated: challenge (Bot Fight Mode / challenge on non-browser clients) (Cloudflare)cf-mitigated: chall…upstream timed out — Nginx: upstream timed out (110: Connection timed out) while reading response header from upstream (Nginx / Apache)upstream timed out

Directly related (12)

403HTTP

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…

403 Forbidden wp-adminWordPress

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…

session save pathPHP

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.

sudoersLinux

user is not in the sudoers file. This incident will be reported.

Your account isn’t allowed to use sudo.

listen EACCESNode.js

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.

avc: deniedLinux

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…

EPERMNode.js

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.

spawn EACCESNode.js

Error: spawn EACCES

Node tried to execute a file that isn’t executable (missing +x permission) or isn’t a program.

Laravel storagePHP

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.

UNPROTECTED PRIVATE KEY FILELinux

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).

Not allowedWordPress

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…

ModSecurity: Access denied with code 403Nginx / Apache

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)

publickeyGit

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.

AccessDeniedAWS

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.

EACCESLinux

Linux: Permission denied

Your user (or the service user) lacks read/write/execute permission on a file, directory or one of its parents.

webhook signatureAPI

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.

1020Cloudflare

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…

Primary script unknownPHP

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.

daemonDocker

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.

ExpiredTokenAWS

AWS: ExpiredToken — The security token included in the request is expired

Temporary AWS credentials (STS/SSO/assumed role) have expired.

401HTTP

HTTP 401 Unauthorized

The request has no valid authentication credentials — you need to log in or send a valid token.

dpkg lockLinux

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.

AccessDeniedExceptionJava

java.nio.file.AccessDeniedException: /path

The OS denied a file operation to the Java process.

clipboard write blockedJavaScript

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.

EADDRINUSENode.js

Error: listen EADDRINUSE: address already in use :::3000

Another process is already listening on that port.

port is already allocatedDocker

Docker: Bind for 0.0.0.0:80 failed: port is already allocated

Another container or host process already publishes that host port.

invalid_scopeAuthentication

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 (volume)Docker

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…

REMOTE HOST IDENTIFICATION HAS CHANGEDLinux

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…

NO_PUBKEYLinux

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).

EACCESnpm

npm ERR! code EACCES — permission denied

npm can’t write to a directory — usually global installs into a root-owned folder.

EISDIRNode.js

Error: EISDIR: illegal operation on a directory, read

A file API (readFile, writeFile, createReadStream) was given a directory path.

ENOTDIRNode.js

Error: ENOTDIR: not a directory

A path treats a file as if it were a directory (e.g. file.txt/child).

ENOENTNode.js

Error: ENOENT: no such file or directory

A file or directory the program tried to open doesn’t exist at that path.

EPIPENode.js

Error: write EPIPE

Node wrote to a pipe or socket whose other end was already closed.

maxBuffer exceededNode.js

RangeError [ERR_CHILD_PROCESS_STDIO_MAXBUFFER]: stdout maxBuffer length exceeded

child_process.exec/execSync produced more output than its buffer allows (default 1 MB).

failed to open streamPHP

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.

No application encryption keyPHP

Laravel: No application encryption key has been specified.

Laravel’s APP_KEY is missing, so it can’t encrypt sessions and cookies.

419 Page ExpiredPHP

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 port 22 Connection refusedLinux

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…

Too many authentication failuresLinux

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 pipeLinux

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.

DB connectionWordPress

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.

Critical errorWordPress

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.

file_type_not_allowedAPI

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.

bind() failed (98: Address already in use)Linux

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…

cf-mitigated: challengeCloudflare

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…

upstream timed outNginx / Apache

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.