[pmwiki-users] RFC: PITS 00701 -- WikiFarm confusion

Joachim Durchholz jo at durchholz.org
Wed Mar 15 15:34:18 CST 2006


Patrick R. Michaud schrieb:
> 
> It's *very* difficult to get PHP to apply this in scripts, since
> there's not a "fall back" mechanism that we can use for include 
> statements.

   if (is_readable ($local_dir . '/' . $file)) {
     include ($local_dir . '/' . $file);
   } else {
     include ($fallback_dir . '/' . $file);
   }

This code works even if it is inside a function like this:

function include_file ($file) {
   if (is_readable ($local_dir . '/' . $file)) {
     include ($local_dir . '/' . $file);
   } else {
     include ($fallback_dir . '/' . $file);
   }
}

Well, sort of: variables assigned to within the included files will be 
local to include_file(). (Workaround: add a "global" directive.)
Function and class definitions inside the included file will be exported 
into the global scope though.

(Just tested with PHP 4.4.4.)

>> On  a safe_mode-disabled server, this would allow webmasters to install 
>> the software, and nail down the configuration so that it "simply works" 
>> for their customers.
> 
> PmWiki already works this way.  A webmaster can install a copy of
> PmWiki in, say, /usr/local/pmwiki, and then customers simply
> create directories with index.php files that have
> 
>     <?php include_once('/usr/local/pmwiki/pmwiki.php');

How would I make sure that the scripts/ directory is taken from 
/usr/local/pmwiki?
chdir() won't work, PmWiki would then take the local/ directory (and 
config.php) from the central installation, too.

>> Being part of a web hoster, I can say that such a setup would make 
>> PmWiki instantly attractive for us. (Not that it isn't already - but we 
>> could then say things like "your WWW site comes with a preinstalled wiki 
>> that you can clone if you need multiple wikis", instead of "install and 
>> administer your own wikis". We could preinstall recipes that would make 
>> sense for our customers. That all would definitely make a difference.)
> 
> And yet again: PmWiki is already designed to work in *exactly* 
> this manner.

I haven't found recipes to do that.

Well, maybe I overlooked the recipe because it wasn't clearly marked as 
"separates generic PmWiki stuff from stuff that applies to a specific 
slave wiki".
The slogan "separate code from data" doesn't adequately describe what I 
had in mind; it ignores that some components of a PmWiki installation 
could be partly local, partly global: recipes, skins, configuration, 
pages. It's more like a fallback mechanism.

Regards,
Jo




More information about the pmwiki-users mailing list