|
|
|
|
||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Pedro wrote:
> its Smarty-2.1.12 > > There are 6 templatess and therefore six compile files.. > > However each time I "refresh" another 6 *.tmp files appear (as I have > force_compile on). > > this is confusing ! sounds like the OS is not allowing smarty to delete it's own tmp files. > > pete > > > Pedro wrote: > >> I've setting up a site using Smarty on windows/IIS/fast-cgi. >> >> There is a shared smartty compile dir .. However this firectory is >> filles up with zero length files with the format wrtXXXX.tmp where >> XXXX is a four digit number >> >> HAve no inkling why this is happening.. and it seems strange its in >> the SMarty dir ?? >> >> here's the code for the configuration >> >> define('SITE_KEY','bias_va'); >> >> define('SMARTY_DIR', SITE_ROOT.'/libs/Smarty-2.6.12/libs/'); >> require_once(SMARTY_DIR.'Smarty.class.php'); >> $smarty = new Smarty(); >> $smarty->debugging = true; // only on test server >> >> //** smarty compile >> $smarty->force_compile = true; //( SERVER_NAME == DEV_SERVER ); >> // only on test server >> $smarty->compile_check = true; >> $smarty->compile_id = SITE_KEY; >> $smarty->compile_dir = SITE_ROOT.'/smarty_compile_dir'; >> $smarty->use_sub_dirs = false; //f&*( windows >> >> >> >> any idea >> Pete > > |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
I've setting up a site using Smarty on windows/IIS/fast-cgi.
There is a shared smartty compile dir .. However this firectory is filles up with zero length files with the format wrtXXXX.tmp where XXXX is a four digit number HAve no inkling why this is happening.. and it seems strange its in the SMarty dir ?? here's the code for the configuration define('SITE_KEY','bias_va'); define('SMARTY_DIR', SITE_ROOT.'/libs/Smarty-2.6.12/libs/'); require_once(SMARTY_DIR.'Smarty.class.php'); $smarty = new Smarty(); $smarty->debugging = true; // only on test server //** smarty compile $smarty->force_compile = true; //( SERVER_NAME == DEV_SERVER ); // only on test server $smarty->compile_check = true; $smarty->compile_id = SITE_KEY; $smarty->compile_dir = SITE_ROOT.'/smarty_compile_dir'; $smarty->use_sub_dirs = false; //f&*( windows any idea Pete |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
its Smarty-2.1.12
There are 6 templatess and therefore six compile files.. However each time I "refresh" another 6 *.tmp files appear (as I have force_compile on). this is confusing ! pete Pedro wrote: > I've setting up a site using Smarty on windows/IIS/fast-cgi. > > There is a shared smartty compile dir .. However this firectory is > filles up with zero length files with the format wrtXXXX.tmp where XXXX > is a four digit number > > HAve no inkling why this is happening.. and it seems strange its in the > SMarty dir ?? > > here's the code for the configuration > > define('SITE_KEY','bias_va'); > > define('SMARTY_DIR', SITE_ROOT.'/libs/Smarty-2.6.12/libs/'); > require_once(SMARTY_DIR.'Smarty.class.php'); > $smarty = new Smarty(); > $smarty->debugging = true; // only on test server > > //** smarty compile > $smarty->force_compile = true; //( SERVER_NAME == DEV_SERVER ); // > only on test server > $smarty->compile_check = true; > $smarty->compile_id = SITE_KEY; > $smarty->compile_dir = SITE_ROOT.'/smarty_compile_dir'; > $smarty->use_sub_dirs = false; //f&*( windows > > > > any idea > Pete |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
I think the problem is in the file libs/internals/core.write_file.php.
Try the patched version attached to this mail. Here is what I think is happening: At line 28 an temp file is created, then at line 30 this file is opened for writing. If opening the temp file fails Smarty will try to create a temp file using uniqid() (line 31) But the temp file already created at line 28 isn't removed first. I also attached a diff to the last version that is in the cvs. Greetings, Jan Rosier Jochem Maas wrote: > Pedro wrote: >> its Smarty-2.1.12 >> >> There are 6 templatess and therefore six compile files.. >> >> However each time I "refresh" another 6 *.tmp files appear (as I have >> force_compile on). >> >> this is confusing ! > > sounds like the OS is not allowing smarty to delete it's own tmp files. > >> >> pete >> >> >> Pedro wrote: >> >>> I've setting up a site using Smarty on windows/IIS/fast-cgi. >>> >>> There is a shared smartty compile dir .. However this firectory is >>> filles up with zero length files with the format wrtXXXX.tmp where >>> XXXX is a four digit number >>> >>> HAve no inkling why this is happening.. and it seems strange its in >>> the SMarty dir ?? >>> >>> here's the code for the configuration >>> >>> define('SITE_KEY','bias_va'); >>> >>> define('SMARTY_DIR', SITE_ROOT.'/libs/Smarty-2.6.12/libs/'); >>> require_once(SMARTY_DIR.'Smarty.class.php'); >>> $smarty = new Smarty(); >>> $smarty->debugging = true; // only on test server >>> >>> //** smarty compile >>> $smarty->force_compile = true; //( SERVER_NAME == DEV_SERVER ); >>> // only on test server >>> $smarty->compile_check = true; >>> $smarty->compile_id = SITE_KEY; >>> $smarty->compile_dir = SITE_ROOT.'/smarty_compile_dir'; >>> $smarty->use_sub_dirs = false; //f&*( windows >>> >>> >>> >>> any idea >>> Pete >> >> > 30a31,33 > if (file_exists($_tmp_file)) { > @unlink($_tmp_file); > } |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
The attached php file got lost. This time the file is attached as text
file. Hope this works... Greetings, Jan Rosier Jan Rosier wrote: > I think the problem is in the file libs/internals/core.write_file.php. > Try the patched version attached to this mail. > > Here is what I think is happening: > At line 28 an temp file is created, then at line 30 this file is > opened for writing. > If opening the temp file fails Smarty will try to create a temp file > using uniqid() (line 31) > But the temp file already created at line 28 isn't removed first. > > I also attached a diff to the last version that is in the cvs. > > Greetings, > Jan Rosier > > <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * write out a file to disk * * @param string $filename * @param string $contents * @param boolean $create_dirs * @return boolean */ function smarty_core_write_file($params, &$smarty) { $_dirname = dirname($params['filename']); if ($params['create_dirs']) { $_params = array('dir' => $_dirname); require_once(SMARTY_CORE_DIR . 'core.create_dir_structure.php'); smarty_core_create_dir_structure($_params, $smarty); } // write to tmp file, then rename it to avoid // file locking race condition $_tmp_file = tempnam($_dirname, 'wrt'); if (!($fd = @fopen($_tmp_file, 'wb'))) { if (file_exists($_tmp_file)) { @unlink($_tmp_file); } $_tmp_file = $_dirname . DIRECTORY_SEPARATOR . uniqid('wrt'); if (!($fd = @fopen($_tmp_file, 'wb'))) { $smarty->trigger_error("problem writing temporary file '$_tmp_file'"); return false; } } fwrite($fd, $params['contents']); fclose($fd); // Delete the file if it allready exists (this is needed on Win, // because it cannot overwrite files with rename() if (file_exists($params['filename'])) { @unlink($params['filename']); } @rename($_tmp_file, $params['filename']); @chmod($params['filename'], $smarty->_file_perms); return true; } /* vim: set expandtab: */ ?> |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
Try removing the @ from the code. So @fopen becomes fopen and so on.
See if PHP reports any errors after you do this. To make sure error reporting is on you can add the following lines to the code: ini_set('display_errors', 1); error_reporting(E_ALL); Greetings, Jan Rosier Pedro wrote: > Didnt make any difference .. not sure what is happening "" > > pete > > Jan Rosier wrote: >> The attached php file got lost. This time the file is attached as >> text file. Hope this works... >> >> Greetings, >> Jan Rosier >> >> >> Jan Rosier wrote: >> >>> I think the problem is in the file >>> libs/internals/core.write_file.php. Try the patched version attached >>> to this mail. >>> >>> Here is what I think is happening: >>> At line 28 an temp file is created, then at line 30 this file is >>> opened for writing. >>> If opening the temp file fails Smarty will try to create a temp file >>> using uniqid() (line 31) >>> But the temp file already created at line 28 isn't removed first. >>> >>> I also attached a diff to the last version that is in the cvs. >>> >>> Greetings, >>> Jan Rosier >>> >>> >> >> ------------------------------------------------------------------------ >> >> <?php >> /** >> * Smarty plugin >> * @package Smarty >> * @subpackage plugins >> */ >> >> /** >> * write out a file to disk >> * >> * @param string $filename >> * @param string $contents >> * @param boolean $create_dirs >> * @return boolean >> */ >> function smarty_core_write_file($params, &$smarty) >> { >> $_dirname = dirname($params['filename']); >> >> if ($params['create_dirs']) { >> $_params = array('dir' => $_dirname); >> require_once(SMARTY_CORE_DIR . 'core.create_dir_structure.php'); >> smarty_core_create_dir_structure($_params, $smarty); >> } >> >> // write to tmp file, then rename it to avoid >> // file locking race condition >> $_tmp_file = tempnam($_dirname, 'wrt'); >> >> if (!($fd = @fopen($_tmp_file, 'wb'))) { >> if (file_exists($_tmp_file)) { >> @unlink($_tmp_file); >> } >> $_tmp_file = $_dirname . DIRECTORY_SEPARATOR . uniqid('wrt'); >> if (!($fd = @fopen($_tmp_file, 'wb'))) { >> $smarty->trigger_error("problem writing temporary file >> '$_tmp_file'"); >> return false; >> } >> } >> >> fwrite($fd, $params['contents']); >> fclose($fd); >> >> // Delete the file if it allready exists (this is needed on Win, >> // because it cannot overwrite files with rename() >> if (file_exists($params['filename'])) { >> @unlink($params['filename']); >> } >> @rename($_tmp_file, $params['filename']); >> @chmod($params['filename'], $smarty->_file_perms); >> >> return true; >> } >> >> /* vim: set expandtab: */ >> >> ?> > |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
Didnt make any difference .. not sure what is happening ""
pete Jan Rosier wrote: > The attached php file got lost. This time the file is attached as text > file. Hope this works... > > Greetings, > Jan Rosier > > > Jan Rosier wrote: > >> I think the problem is in the file libs/internals/core.write_file.php. >> Try the patched version attached to this mail. >> >> Here is what I think is happening: >> At line 28 an temp file is created, then at line 30 this file is >> opened for writing. >> If opening the temp file fails Smarty will try to create a temp file >> using uniqid() (line 31) >> But the temp file already created at line 28 isn't removed first. >> >> I also attached a diff to the last version that is in the cvs. >> >> Greetings, >> Jan Rosier >> >> > > ------------------------------------------------------------------------ > > <?php > /** > * Smarty plugin > * @package Smarty > * @subpackage plugins > */ > > /** > * write out a file to disk > * > * @param string $filename > * @param string $contents > * @param boolean $create_dirs > * @return boolean > */ > function smarty_core_write_file($params, &$smarty) > { > $_dirname = dirname($params['filename']); > > if ($params['create_dirs']) { > $_params = array('dir' => $_dirname); > require_once(SMARTY_CORE_DIR . 'core.create_dir_structure.php'); > smarty_core_create_dir_structure($_params, $smarty); > } > > // write to tmp file, then rename it to avoid > // file locking race condition > $_tmp_file = tempnam($_dirname, 'wrt'); > > if (!($fd = @fopen($_tmp_file, 'wb'))) { > if (file_exists($_tmp_file)) { > @unlink($_tmp_file); > } > $_tmp_file = $_dirname . DIRECTORY_SEPARATOR . uniqid('wrt'); > if (!($fd = @fopen($_tmp_file, 'wb'))) { > $smarty->trigger_error("problem writing temporary file '$_tmp_file'"); > return false; > } > } > > fwrite($fd, $params['contents']); > fclose($fd); > > // Delete the file if it allready exists (this is needed on Win, > // because it cannot overwrite files with rename() > if (file_exists($params['filename'])) { > @unlink($params['filename']); > } > @rename($_tmp_file, $params['filename']); > @chmod($params['filename'], $smarty->_file_perms); > > return true; > } > > /* vim: set expandtab: */ > > ?> |
|
|
|
#8 |
|
Messages: n/a
Hébergeur: |
SO php can delete the actual compiled templates..
but not any *.tmp files notice that the path is the compile_dir ... coud this not be the $_ENV['tmp'] directory ?? current: $_tmp_file = tempnam($_dirname, 'wrt'); suggested $_tmp_file = tempnam($_ENV['tmp'], 'wrt'); Still banging my head against wall !! regards Pete Jan Rosier wrote: > Try removing the @ from the code. So @fopen becomes fopen and so on. > See if PHP reports any errors after you do this. > > To make sure error reporting is on you can add the following lines to > the code: > > ini_set('display_errors', 1); > error_reporting(E_ALL); > > Greetings, > Jan Rosier > > > > Pedro wrote: > >> Didnt make any difference .. not sure what is happening "" >> >> pete >> >> Jan Rosier wrote: >> >>> The attached php file got lost. This time the file is attached as >>> text file. Hope this works... >>> >>> Greetings, >>> Jan Rosier >>> >>> >>> Jan Rosier wrote: >>> >>>> I think the problem is in the file >>>> libs/internals/core.write_file.php. Try the patched version attached >>>> to this mail. >>>> >>>> Here is what I think is happening: >>>> At line 28 an temp file is created, then at line 30 this file is >>>> opened for writing. >>>> If opening the temp file fails Smarty will try to create a temp file >>>> using uniqid() (line 31) >>>> But the temp file already created at line 28 isn't removed first. >>>> >>>> I also attached a diff to the last version that is in the cvs. >>>> >>>> Greetings, >>>> Jan Rosier >>>> >>>> >>> >>> ------------------------------------------------------------------------ >>> >>> <?php >>> /** >>> * Smarty plugin >>> * @package Smarty >>> * @subpackage plugins >>> */ >>> >>> /** >>> * write out a file to disk >>> * >>> * @param string $filename >>> * @param string $contents >>> * @param boolean $create_dirs >>> * @return boolean >>> */ >>> function smarty_core_write_file($params, &$smarty) >>> { >>> $_dirname = dirname($params['filename']); >>> >>> if ($params['create_dirs']) { >>> $_params = array('dir' => $_dirname); >>> require_once(SMARTY_CORE_DIR . 'core.create_dir_structure.php'); >>> smarty_core_create_dir_structure($_params, $smarty); >>> } >>> >>> // write to tmp file, then rename it to avoid >>> // file locking race condition >>> $_tmp_file = tempnam($_dirname, 'wrt'); >>> >>> if (!($fd = @fopen($_tmp_file, 'wb'))) { >>> if (file_exists($_tmp_file)) { >>> @unlink($_tmp_file); >>> } >>> $_tmp_file = $_dirname . DIRECTORY_SEPARATOR . uniqid('wrt'); >>> if (!($fd = @fopen($_tmp_file, 'wb'))) { >>> $smarty->trigger_error("problem writing temporary file >>> '$_tmp_file'"); >>> return false; >>> } >>> } >>> >>> fwrite($fd, $params['contents']); >>> fclose($fd); >>> >>> // Delete the file if it allready exists (this is needed on Win, >>> // because it cannot overwrite files with rename() >>> if (file_exists($params['filename'])) { >>> @unlink($params['filename']); >>> } >>> @rename($_tmp_file, $params['filename']); >>> @chmod($params['filename'], $smarty->_file_perms); >>> >>> return true; >>> } >>> >>> /* vim: set expandtab: */ >>> >>> ?> >> >> |
|
|
|
#9 |
|
Messages: n/a
Hébergeur: |
Maybe this is your problem
http://bugs.php.net/bug.php?id=23069 Bug #23069 tempnam creates readonly file. Try upgrading PHP Greetings, Jan Rosier Pedro wrote: > SO php can delete the actual compiled templates.. > > but not any *.tmp files > > notice that the path is the compile_dir ... coud this not be the > $_ENV['tmp'] directory ?? > > current: > $_tmp_file = tempnam($_dirname, 'wrt'); > suggested > $_tmp_file = tempnam($_ENV['tmp'], 'wrt'); > > Still banging my head against wall !! > > regards > > Pete > > Jan Rosier wrote: >> Try removing the @ from the code. So @fopen becomes fopen and so on. >> See if PHP reports any errors after you do this. >> >> To make sure error reporting is on you can add the following lines to >> the code: >> >> ini_set('display_errors', 1); >> error_reporting(E_ALL); >> >> Greetings, >> Jan Rosier >> >> >> >> Pedro wrote: >> >>> Didnt make any difference .. not sure what is happening "" >>> >>> pete >>> >>> Jan Rosier wrote: >>> >>>> The attached php file got lost. This time the file is attached as >>>> text file. Hope this works... >>>> >>>> Greetings, >>>> Jan Rosier >>>> >>>> >>>> Jan Rosier wrote: >>>> >>>>> I think the problem is in the file >>>>> libs/internals/core.write_file.php. Try the patched version >>>>> attached to this mail. >>>>> >>>>> Here is what I think is happening: >>>>> At line 28 an temp file is created, then at line 30 this file is >>>>> opened for writing. >>>>> If opening the temp file fails Smarty will try to create a temp >>>>> file using uniqid() (line 31) >>>>> But the temp file already created at line 28 isn't removed first. >>>>> >>>>> I also attached a diff to the last version that is in the cvs. >>>>> >>>>> Greetings, >>>>> Jan Rosier >>>>> >>>>> >>>> >>>> ------------------------------------------------------------------------ >>>> >>>> >>>> <?php >>>> /** >>>> * Smarty plugin >>>> * @package Smarty >>>> * @subpackage plugins >>>> */ >>>> >>>> /** >>>> * write out a file to disk >>>> * >>>> * @param string $filename >>>> * @param string $contents >>>> * @param boolean $create_dirs >>>> * @return boolean >>>> */ >>>> function smarty_core_write_file($params, &$smarty) >>>> { >>>> $_dirname = dirname($params['filename']); >>>> >>>> if ($params['create_dirs']) { >>>> $_params = array('dir' => $_dirname); >>>> require_once(SMARTY_CORE_DIR . >>>> 'core.create_dir_structure.php'); >>>> smarty_core_create_dir_structure($_params, $smarty); >>>> } >>>> >>>> // write to tmp file, then rename it to avoid >>>> // file locking race condition >>>> $_tmp_file = tempnam($_dirname, 'wrt'); >>>> >>>> if (!($fd = @fopen($_tmp_file, 'wb'))) { >>>> if (file_exists($_tmp_file)) { >>>> @unlink($_tmp_file); >>>> } >>>> $_tmp_file = $_dirname . DIRECTORY_SEPARATOR . uniqid('wrt'); >>>> if (!($fd = @fopen($_tmp_file, 'wb'))) { >>>> $smarty->trigger_error("problem writing temporary file >>>> '$_tmp_file'"); >>>> return false; >>>> } >>>> } >>>> >>>> fwrite($fd, $params['contents']); >>>> fclose($fd); >>>> >>>> // Delete the file if it allready exists (this is needed on Win, >>>> // because it cannot overwrite files with rename() >>>> if (file_exists($params['filename'])) { >>>> @unlink($params['filename']); >>>> } >>>> @rename($_tmp_file, $params['filename']); >>>> @chmod($params['filename'], $smarty->_file_perms); >>>> >>>> return true; >>>> } >>>> >>>> /* vim: set expandtab: */ >>>> >>>> ?> >>> >>> > |
|
![]() |
| Outils de la discussion | |
|
|