Afficher un message
Vieux 02/02/2006, 12h57   #8
Pedro
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: [SMARTY] Re: windows problem with loads of *.tmp files - MOREinfo

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: */
>>>
>>> ?>

>>
>>

  Réponse avec citation
 
Page generated in 0,07192 seconds with 9 queries