diff --git a/docs/basics/filesystem.md b/docs/basics/filesystem.md new file mode 100644 index 0000000000000000000000000000000000000000..30580e3aa307a5dd2bca340e463f5b7fa737447a --- /dev/null +++ b/docs/basics/filesystem.md @@ -0,0 +1,110 @@ +# File system + +The file structure of the content management systems that CiviCRM operates in +differs among the different content management systems it installs within, but +the general concepts are the same. One directory contains the CiviCRM +**codebase** (including CMS-specific code to integrate with the website), +another directory contains **local files** that are site-specific, and the site +will have a CiviCRM **settings file**. + +## Codebase + +The codebase consists of the common CiviCRM code (found in the +[civicrm-core](https://github.com/civicrm/civicrm-core/) and +[civicrm-packages](https://github.com/civicrm/civicrm-packages/) repositories) +along with the code to integrate with the CMS. Obviously, Drupal and Backdrop +modules, Joomla components, and WordPress plugins have different structures, so +the [civicrm-drupal](https://github.com/civicrm/civicrm-drupal/), +[civicrm-backdrop](https://github.com/civicrm/civicrm-backdrop/), +[civicrm-joomla](https://github.com/civicrm/civicrm-joomla/), and +[civicrm-wordpress](https://github.com/civicrm/civicrm-wordpress/) repositories +contain the code connecting CiviCRM to the CMS along with some CMS-specific +features. + +### Drupal and Backdrop + +The CiviCRM module is typically found in the `sites/all/modules/civicrm` +directory. As with any module, it is possible to have CiviCRM run from the +`modules` directory within some other subdirectory of `sites` (for site-specific +use), a subdirectory of either of these locations, or within the root `modules` +directory (which is *not advisable*). + +The `sites/all/modules/civicrm/drupal` directory corresponds to the +[civicrm-drupal](https://github.com/civicrm/civicrm-drupal/) repository. It +contains `civicrm.module`, the actual module file, along with the role sync +modules, blocks, and drush and views integration. + +### Joomla + +CiviCRM's codebase exists in *two* places within Joomla: + + - A front-end component at `components/com_civicrm` + - A back-end component at `administrator/components/com_civicrm` + +The back-end component contains the common CiviCRM code, in +`administrator/components/com_civicrm/civicrm`. The +[civicrm-joomla](https://github.com/civicrm/civicrm-joomla/) repository contains +a `site` directory for the front-end files and an `admin` directory for the +back-end files. + +### WordPress + +The CiviCRM plugin is found in `wp-content/plugins/civicrm`. This corresponds +to the [civicrm-wordpress](https://github.com/civicrm/civicrm-wordpress/) +repository, containing the plugin file as well as WP-CLI integration. The +common CiviCRM codebase is found at `wp-content/plugins/civicrm/civicrm`. + +## Local files + +CiviCRM also needs a files directory for storing a variety of site-specific +files, including uploaded files, logs, and the template cache. This directory +is located away from the codebase in a location that is unlikely to be +overwritten during upgrades. + +### Drupal and Backdrop + +CiviCRM stores its files in a folder named `civicrm` within the site-specific +files directory. This is commonly `sites/default/files/civicrm`, though it +could be `sites/example.org/files/civicrm` if such a folder exists. + +### Joomla + +The CiviCRM local files are within the `media/civicrm` directory. + +### WordPress + +Newly-installed CiviCRM sites on WordPress have their local files at +`wp-content/uploads/civicrm`. Many older sites use the previous default: +`wp-content/plugins/files/civicrm`. + +## Settings file + +CiviCRM's database connection, base URL, site key, CMS, and file paths are defined in `civicrm.settings.php`. + +### Drupal and Backdrop + +The `civicrm.settings.php` file will be a sibling of Drupal's `settings.php`, +commonly at `sites/default/civicrm.settings.php`, or +`sites/example.org/civicrm.settings.php` in multi-site. + +### Joomla + +There are two instances of `civicrm.settings.php` in Joomla, within each of the +components: + + - front-end at `components/com_civicrm/civicrm.settings.php` + - back-end at `administrator/components/com_civicrm/civicrm.settings.php` + +The files are *nearly* identical. The one difference is that the front-end file +has the site's normal base URL, while the back-end file has `/administrator/` on +the end, pointing to the back-end of the site. + +### WordPress + +Newly-installed CiviCRM sites on WordPress have the settings file at +`wp-content/uploads/civicrm/civicrm.settings.php`. Many older sites, however, +put the settings file within the CiviCRM plugin folder at +`wp-content/plugins/civicrm/civicrm.settings.php`. This latter location can be +dangerous when upgrading: it is important in this case to keep the `civicrm` +folder until the upgrade is complete and the site is verified to be working +properly. diff --git a/docs/dev-tools/debugging.md b/docs/dev-tools/debugging.md index e4ffa144f21ad22a105ffd527a59f88d3145a831..6520c6b9225e97d418a9896d2e6e6aee3173767a 100644 --- a/docs/dev-tools/debugging.md +++ b/docs/dev-tools/debugging.md @@ -50,11 +50,10 @@ A backtrace is a list of all the functions that were run in the execution of the ## Viewing log files -CiviCRM's log files are stored in the `civicrm/ConfigAndLog` directory -(below the `files` directory in Drupal sites, and below the `media` -directory in Joomla sites and under `wp-content/plugins/files/` directory -in Wordpress). Most runtime errors are logged here, as well as data that -you explicitly write to log using the `CRM_Core_Error::debug log=true` +CiviCRM's log files are stored in the `ConfigAndLog` directory within CiviCRM's +local file storage (see [the File System documentation](../basics/filesystem.md) +for details on your CMS). Most runtime errors are logged here, as well as data +that you explicitly write to log using the `CRM_Core_Error::debug log=true` parameter. @@ -76,10 +75,10 @@ The following values can be added to your site's settings file `civicrm.settings - `define('CIVICRM_CONTAINER_CACHE', 'never');` causes Civi to rebuild the [container](http://symfony.com/doc/current/service_container.html) from the latest data on every page-load !!! tip - When any sort of "logging stuff to a file" is enabled by one of the above settings, check the following directories for the resulting file: - - - Drupal: `files/civicrm/ConfigAndLog/` - - Joomla: `media/civicrm/ConfigAndLog/` + When any sort of "logging stuff to a file" is enabled by one of the + above settings, check the `ConfigAndLog` directory within the local files + directory to find the log. (See [the File System + documentation](../basics/filesystem.md) for the location in your CMS.) ## Viewing a query log from MySQL @@ -94,12 +93,12 @@ The relevant settings are: general_log_file=/tmp/mysql.log # Enable/disable the query log general_log=1 - + You can enable the query log at runtime via SQL, provided the path to the logfile is configured. SET GLOBAL general_log = 'ON'; SET GLOBAL general_log = 'OFF'; - + And you can inspect the query log settings also: mysql> show variables like '%general%'; diff --git a/mkdocs.yml b/mkdocs.yml index 835848f387f840489b935cdb8aa805dc48af75f0..3baa8d2e2cd83663e4c243581c9a9d5e02cd8ebb 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -29,6 +29,7 @@ pages: - Developer Community: basics/community.md # page-tree = DONE - Useful Skills: basics/skills.md # page-tree = DONE - Planning Your Project: basics/planning.md # page-tree = DONE + - File System: basics/filesystem.md # buildkit: /setup/buildkit.md # page-tree = NEED_NEW_PAGE # summary: See Github README for download instructions. Alternatively, follow links and install particular tools as-needed. - Debugging: dev-tools/debugging.md # page-tree = NEED_PAGE_MOVE to /setup/debugging.md - Core Development: