Recipe 21.11 Communicating Between mod_perl and PHP

21.11.1 Problem

You want to build your site from both mod_perl and PHP. For example, you might want to use mod_perl for authentication and logging, while PHP generates the actual content. However, doing so means that Perl and PHP must share values; for example, so the PHP content handler knows which username successfully authenticated through mod_perl.

21.11.2 Solution

Use Apache notes. From Perl, you simply say:

$main = $r->main || $r;
$main->notes($KEY => $VALUE);
$VALUE = $main->notes($KEY);

From PHP, you say:

apache_note($KEY, $VALUE);
$VALUE = apache_note($KEY);

21.11.3 Discussion

A note is a string value attached to an Apache request. They're a perfect way to pass information between handlers, even when those handlers are written in different programming languages. Each request has a different set of notes, so from Perl always identify the main request and use it to communicate with PHP code.

Don't confuse the $r->notes method with the $r->pnotes method. The latter is only available to Perl modules.

21.11.4 See Also

Recipe 21.10