Error map
Laravel storage Laravel: The stream or file "storage/logs/laravel.log" could not be opened in append mode: Failed to open stream: Permission denied
PHP · layer 4, Application & API
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)
Linux: Permission denied
Your user (or the service user) lacks read/write/execute permission on a file, directory or one of its parents.
macOS: Operation not permitted — Terminal/app lacks Full Disk Access (TCC privacy protection)
macOS privacy protection (TCC) blocked access to protected folders (Desktop, Documents, Downloads, Mail, Photos, external volumes…
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.
Laravel: 419 Page Expired (CSRF token mismatch)
Laravel rejected a POST because the CSRF token was missing, expired or didn’t match the session.
PERMISSION_DENIED: The caller does not have permission (insufficient permissions)
You are authenticated, but your identity isn’t allowed to perform this action on this resource.
System.UnauthorizedAccessException: Access to the path 'x' is denied
The process’s identity can’t read/write that file or folder — IIS app pool identity, container user, read-only attribute, or a di…
Laravel: No application encryption key has been specified.
Laravel’s APP_KEY is missing, so it can’t encrypt sessions and cookies.
AccessControlListNotSupported: The bucket does not allow ACLs
The upload sets an ACL (like public-read), but the bucket uses “Bucket owner enforced” Object Ownership, which disables ACLs.
Key Vault: (Forbidden) The user, group or application does not have secrets get permission on key vault
The caller authenticated but has no permission on the vault — missing access policy or RBAC role, or the vault’s firewall blocks…
Laravel: Target class [App\Http\Controllers\X] does not exist.
Laravel’s container couldn’t find the controller or class named in a route or binding.
Laravel: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'db.sessions' doesn't exist
Laravel queried a table that hasn’t been created — usually sessions, cache, jobs or a new model’s table.
java.lang.SecurityException: Permission Denial ... requires android.permission.X
The app called an API that needs a permission it hasn’t declared or the user hasn’t granted at runtime.
Two steps away (35)
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.
npm ERR! code EACCES — permission denied
npm can’t write to a directory — usually global installs into a root-owned folder.
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.
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…
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.
Windows Error 0x80070005 (E_ACCESSDENIED): Access is denied
Windows refused an operation because the account or process lacks permission — seen in Windows Update, installers, Task Scheduler…
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.
Warning: session_start(): Session cannot be started after headers have already been sent
session_start() ran after output was sent, so PHP can’t set the session cookie.
Laravel: Vite manifest not found at: public/build/manifest.json
Laravel’s @vite directive can’t find the compiled asset manifest because assets weren’t built.
Forbidden (403) CSRF verification failed. Request aborted.
Django rejected a POST because the CSRF token was missing, wrong, or the request origin isn’t trusted.
ASP.NET Core: The antiforgery token could not be decrypted / The required antiforgery cookie is not present (400 Bad Request)
Form POST failed antiforgery validation — the token is missing, the cookie is missing, or Data Protection keys changed so old tok…
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.
Azure: AuthorizationFailed — The client does not have authorization to perform action
The signed-in identity (user, service principal or managed identity) lacks an Azure RBAC role for that action on that scope.
Azure Storage: AuthorizationPermissionMismatch (403) — This request is not authorized to perform this operation using this permission
You’re accessing blob/queue data with Microsoft Entra ID, but the identity has only management roles (Owner/Contributor) — not a…
Error: ENOENT: no such file or directory
A file or directory the program tried to open doesn’t exist at that path.
user is not in the sudoers file. This incident will be reported.
Your account isn’t allowed to use sudo.
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…
Warning: file_exists(): open_basedir restriction in effect. File(/x) is not within the allowed path(s)
PHP is configured to access only certain directories, and the script tried to touch a file outside them.
PHP mail() returns false / emails not delivered
PHP’s mail() function failed or emails never arrive (spam or rejected).
PHP upload error 1: The uploaded file exceeds the upload_max_filesize directive in php.ini
The uploaded file is bigger than PHP’s upload_max_filesize, so PHP discarded it.
AWS S3: NoSuchKey / NoSuchBucket — The specified key/bucket does not exist
S3 found no object at that key (or no bucket with that name in the region/account you’re calling).
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 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.
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.
PHP Fatal error: Uncaught Error: Class "X" not found
PHP couldn’t load the class — autoloading failed, the namespace is wrong, or the dependency isn’t installed.
Laravel: Illuminate\Database\Eloquent\MassAssignmentException: Add [x] to fillable property to allow mass assignment
You passed an array to create()/update()/fill() containing a field that isn’t in the model’s $fillable list.
MySQL ERROR 1146 (42S02): Table 'db.table' doesn't exist
The query references a table that MySQL can’t find in that database.
MySQL ERROR 1022 (23000): Can't write; duplicate key in table
An ALTER/CREATE produced a duplicate key or constraint name — often a foreign key name that already exists in the database.
MySQL ERROR 1061 (42000): Duplicate key name 'x'
CREATE INDEX/ADD INDEX used an index name that already exists on the table.
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.
npm update check failed — Try running with sudo or get access to the local update config store
npm’s update notifier couldn’t write its config — usually root-owned files in ~/.config from a past sudo npm.
FATAL: data directory "/var/lib/postgresql/data" has invalid permissions — Permissions should be u=rwx (0700) or u=rwx,g=rx (0750).
PostgreSQL refuses to start because the data directory is too open or owned by the wrong user.
Map another error
Popular: 4035004000xC000007BTypeErrorCritical error404NullPointerException