# Path Variables

When dealing with file or path variables, one has to recognize the difference between working with and files on disk. For example:

Note that a browser needs a URL (http://www.example.com/pmwiki/pub) while an include statement requires a server file path ($FarmD/scripts/something.php). $FarmD
The directory on the server where the farm is located (i.e., the directory containing the farm's copy of pmwiki.php and the scripts/ directory). This directory is automatically determined by pmwiki.php when it runs, and can be used to distinguish the farm's cookbook/ and pub/ subdirectories from a field's subdirectories.
$FarmPubDirUrl is the url that refers to the pub directory for an entire farm. It defaults to the same value as $PubDirUrl.
$PageCSSListFmt is an associative array which Pm Wiki uses to find any local css configuration files. It consists of a set of (key,value) pairs. The key is a possible path to a file on disk holding the css data, while the value is the coresponding URL for that file. They keys are tested in turn, and for each named file that exists, the browser is instructed to load the corresponding URL. The default value for this variable is:  array( 'pub/css/local.css' => '$PubDirUrl/css/local.css',
'pub/css/Pm Wiki.css' => '$PubDirUrl/css/Pm Wiki.css', 'pub/css/Pm Wiki.Path Variables.css' => '$PubDirUrl/css/Pm Wiki.Path Variables.css');

Note that the default (as of version pmwiki-2.1.beta26) makes no reference to $FarmPubDirUrl. If you wish to be able to place css configuration files in both the field's pub directory, and the farm's pub directory, you may want to add these lines to your local/config.php file (as described in Cookbook:SharedPages):  $PageCSSListFmt = array(
'$FarmD/pub/css/local.css' => '$FarmPubDirUrl/css/local.css',
'$FarmD/pub/css/$Group.css' => '$FarmPubDirUrl/css/$Group.css',
'$FarmD/pub/css/$FullName.css' => '$FarmPubDirUrl/css/$FullName.css',
'pub/css/local.css' => '$PubDirUrl/css/local.css', 'pub/css/$Group.css' => '$PubDirUrl/css/$Group.css',
'pub/css/$FullName.css' => '$PubDirUrl/css/$FullName.css');  $PubDirUrl
is the URL that refers to the pub directory. That directory contains all the files and subdirectories that must be directly accessible from a browser (e.g. CSS and HTML files). Most prominent here is the skins subdirectory.
$ScriptUrl is the URL that you want people's browsers to use when accessing Pm Wiki, either as a field or farm. It's used whenever Pm Wiki needs to generate a link to another Pm Wiki page or action. Pm Wiki is usually fairly good about "guessing" the correct value for $ScriptUrl on its own, but sometimes an admin needs to set it explicitly because of URL manipulations by the webserver (such as Cookbook:CleanUrls, mod_rewrite, bizarre PHP configurations, and so on).
$SkinDirUrl Set by scripts/skins.php to be the base url of the current skin's directory (i.e., within a 'pub/skins/' directory). This variable is typically used inside of a skin .tmpl file to provide access to .css files and graphic images associated with the skin. $WorkDir
This variable is a string that gives a local path to a directory where the pmwiki engine can create temporary files etc. Pm Wiki needs this for a variety of things, such as building merged edits, caching mailposts entries, keeping track of the last modification time of the site, other types of cache, etc. Do not confuse this variable with $WikiDir; the reason that both $WorkDir and $WikiDir refer by default to the directory wiki.d/ is merely to simplify things for the administrator. $WikiDir
$WikiDir is a PageStore-object that refers to how wiki pages are stored. This can be a simple reference to a directory (typically wiki.d/), or something more advanced such as a MySQL backend or a .dbm-file. Do not confuse this variable with $WorkDir; the reason that both $WorkDir and $WikiDir refer by default to the directory wiki.d/ is merely to simplify things for the administrator.
$WikiLibDirs $WikiLibDirs is an array of PageStore objects that specify where to look for pages. By default it is set up to look in wiki.d/ and wikilib.d/, but can be changed to look other places. For example, to exclude the pages that are bundled in the Pm Wiki distribution, use the line below. (Note that some features such as editing and search rely on having certain pages available, so you may need to copy them to the $WikiDir.)  $WikiLibDirs = array(&$WikiDir);  $LocalDir
The filesystem location of the local/ directory, holding local customization and per group customization? files. Typically set in a WikiFarm's farmconfig.php. (Note that farm configuration files always occur in $FarmD/local/farmconfig.php, regardless of any setting for $LocalDir.)