When dealing with file or path variables, one has to recognize the difference between working with urls 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). $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 (e.g., Cookbook:CleanUrls, mod_rewrite, bizarre PHP configurations, etc.). $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.

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

\$UploadDir
The directory where uploads are to be stored. Defaults to uploads/ in the pmwiki directory, but can be set to any location on the server. This directory must be writable by the webserver process if uploading is to occur.