Learn about your Apps directory structure

tmp               < 2GB temporary files
      htdocs      < default root path
      logs        < log files

When you login with SFTP or SSH to your Universal App you can "travel up" in the file directory structure. In this article you can learn the predefined set of folders for each App and what they are for.


The default web root (aka document root) of your App. Directory that forms the main directory tree visible from the web. You can change the routing point, to any folder below the htdocs directory. The Git deployment syncs to the htdocs folder as well.

The htdocs folder is also your "login folder", i.e. the folder you are in when logging in via SSH/SFTP. The whole path looks something like this: /srv/app/{{app-name}}/htdocs/admin.


Temporary folder; limited to 2GB of storage. Files older than 15 days will be automatically purged. Typical use cases are the default PHP session file folder or a temp destination for file uploads via PHP (before move_uploaded_file() is called).

For multi node plans: The tmp folder is not shared. Meaning that each node has "their own" temporary folder.


Where the Apache and PHP errors are located. Also see: logging for Universal Apps and logging for Professional Apps to learn how to access those and how to work with them.

Other folders

The rest of the folders (and files which are not shown here) are part of the standard Linux distribution. All this stuff is handled by us for you. So you don't need to care about them. You can't change things outside the above outlined context.

Further reading

Craft CMS

Install guides

Develop & deploy





Tips & tricks

Need individual help?
Learn about Company plans ›
Looking for an old article?
See the full list of articles ›
Found an error?
Contribute on GitHub ›