Afficher un message
Vieux 31/01/2006, 08h41   #6
Jan Rosier
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: [SMARTY] Re: windows problem with loads of *.tmp files - MOREinfo

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,06199 seconds with 9 queries