PHPTAL functions by generating PHP files from the template's logic, this means that it needs a directory to store those generated files so they can be parsed by the PHP interpreter.
By default PHPTAL will use the system's temp directory (via PHP's
sys_get_temp_dir() function if available) or will try to guess where
it should be, /tmp on Unix like systems and c:\windows\temp on
Microsoft ones, to store the compiled templates. The default
destination can be changed to your liking by calling setPhpCodeDestination()
method with the appropriate path.
Be it the system's temp directory or a custom one, it needs to have
its permissions setup as to allow the PHP running process (the Apache
user if using mod_php or the cgi/fastcgi user otherwise) to create and
update files in that directory.
PHPTAL creates one file for each different template file and one file
for each tag if using phptal:cache. It doesn't create separate files
for macros (which are simply compiled as PHP functions inside the
compiled template file).
These files are automatically cleaned up once in a while, more
specifically, each time a template is compiled there is random
probability, controlled by setCachePurgeFrequency() method, which will
just delete files older than set by setCacheLifetime() method.
Alternatively you can also schedule the deletion of old/unused files by running this from an Unix-like shell (e.g. in a cron job):
find /tmp/ -name tpl_\* \( -atime +1 -o -mtime +14 \) -delete