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