I'm using mod_perl on Windows 7, and am trying to set things up so that I can reload my script and all the modules it uses, without having to restart Apache.
The problem is that my script (called webitext.cgi) updates the @INC variable using statements like these: --- use lib "$ENV{WEBITEXT_HOME}"; use lib "$ENV{WEBITEXT_HOME}/bin"; etc... --- where the value of $ENV{WEBITEXT_HOME} is set differently depending on the virtual host it's running on. I use this so I can have two versions of my app on the server, a production and a test version, each running under a different vhost which defines the env variable differently (using Apache SetEnv). The problem is that when Apache::Reload tries to reload the modules, it does not find them, because it seems to use the value of @INC as it was BEFORE the script was run (i.e. not including the ones added with the 'use lib' statements). This problem occurs whether I use the 'PerlSetVar ReloadTouchFile' approach or the Apache::StatINC approach. It seems to be a well documented limitation of Apache::Reload. So... I thought about setting the @INC path outside of the script. But I need to do this on a per-vhost basis. According to this page: http://perl.apache.org/docs/2.0/user/config/config.html#Modifying_C__INC__on_a_Per_VirtualHost I should be able to do this with something like this: --- <VirtualHost ...> ServerName webitextprod PerlOptions +Parent PerlSwitches -Idir1 -Idir2 etc... </VirtualHost> --- But when I tried this and ran httpd.exe -t -c httpd.conf, it crashed with the dreaded "free to wrong pool" error: --- Free to wrong pool 2b60100 not 3d4f10. --- This error seems to be caused by the PerlOptions +Parent line. Any suggestion for how to fix or get around this problem would be greatly appreciated. Thx. Alain Désilets