Page 1 of 1

Cache-Problem

Posted: Sun May 28, 2006 2:24 pm
by nicob
Hallo,

anfangs sehr begeistert von CMS, habe ich jetzt ein Problem:
Nehme ich eine Veränderung vor, die den Cache löscht oder Verändert, bekomme ich beim ersten Aufruf der Seite immer achtmal (bei der Navigation, im Content und im Footer) die Fehlermeldung:

Code: Select all

Warning: tempnam() has been disabled for security reasons in /htdocs/lib/smarty/internals/core.write_file.php on line 28
Wenn ich dann neu lade, ist der Spuk vorbei und alles läuft perfekt.

Ich hoffe, dass es nicht schon eine Lösung im Forum gibt.

Schönes restliches Wochenende noch!

EDIT: Ähem. Hier noch einige Konfigurationsdetails:
PHP 5.1.4 (safe mode = on)
MySQL 5.0.21
System: Debian

Re: Cache-Problem

Posted: Sun May 28, 2006 3:26 pm
by Piratos
tempnam ist eine PHP Funktion die folgendes macht:

Erzeugt eine Datei mit einem eindeutigen Dateinamen in dem spezifizierten Verzeichnis. Wenn das Verzeichnis nicht existiert, erstellt tempnam() eine Datei im temporären Verzeichnis des Systems, und gibt den Dateinamen zurück.

Nach deiner Fehlermeldung ist tempnam bei dir auf dem Webserver disabled.

Tempnam kommt im gesamten Source 10 mal an den verschiedensten Stellen vor.

Ich kann mir schwerlich vorstellen, dass die CMS bei dir laufen wird.

Und ich kann mir schwer vorstellen, das andere komplexe PHP Software laufen wird.

Ich würde das als Grund ansehen beim Provider auf die Pauke zu hauen und im Zweifelsfall den auch wechseln.

Re: Cache-Problem

Posted: Sun May 28, 2006 4:00 pm
by nicob
Tatsächlich, das Viech steht in den disabled functions...

Alle anderen (auch großen Scripts) gehen aber und auch CMS läuft super (bis auf besagte Fehlermeldungen).

Danke!

EDIT: Jetzt is mit klar, warum das deaktivert ist:
Zitat von http://www.heise.de/security/news/meldung/71862:

Durch eine Lücke in der Funktion tempname() lassen sich die open_basedir-Zugriffsbeschränkungen, einer Alternative zum Safe Mode, austricksen, die ein Ausbrechen des Anwenders aus seinem Heimatverzeichnis verhindern sollen. Mit der Angabe präparierter Pfade im zweiten Argument kann ein Angreifer an beliebigen Orten temporäre Dateien erzeugen, sofern die übergelagerte Rechteverwaltung des Betriebssystems dies erlaubt. Unter Umständen ließe sich dies für Denial-of-Service-Attacken ausnutzen, wenn es gelänge, genügend Speicherplatz zu belegen.

Re: Cache-Problem

Posted: Sun May 28, 2006 4:17 pm
by Piratos
Die CMS wird immer wieder an entscheidenden Stellen ohne tempnam haken oder einfach nicht arbeiten - smarty selbst verwendet es nur 1 mal.
28.05.2006 18:15:37
Search String: Tempnam
Path: I:\xampp\htdocs\013
File Mask: *
Search Subdirectories, Whole Word Match
Processing file : I:\xampp\htdocs\013\admin\addcontent.php
Line 217 -  $tmpfname = ($config["previews_path"], "cmspreview");
Line 221 -  $tmpfname = (TMP_CACHE_LOCATION, "cmspreview");
Found 2 occurrences.
Processing file : I:\xampp\htdocs\013\admin\addtemplate.php
Line 174 -    $tmpfname = ($config["previews_path"], "cmspreview");
Line 178 -    $tmpfname = (TMP_CACHE_LOCATION, "cmspreview");
Found 2 occurrences.
Processing file : I:\xampp\htdocs\013\admin\editcontent.php
Line 250 -    $tmpfname = ($config["previews_path"], "cmspreview");
Line 254 -    $tmpfname = (TMP_CACHE_LOCATION, "cmspreview");
Found 2 occurrences.
Processing file : I:\xampp\htdocs\013\admin\edittemplate.php
Line 217 -    $tmpfname = ($config["previews_path"], "cmspreview");
Line 221 -    $tmpfname = (TMP_CACHE_LOCATION, "cmspreview");
Found 2 occurrences.
Processing file : I:\xampp\htdocs\013\lib\smarty\internals\core.write_file.php
Line  28 -    $_tmp_file = ($_dirname, 'wrt');
Found 1 occurrences.
Processing file : I:\xampp\htdocs\013\modules\FCKeditorX\FCKeditor\editor\dialog\fck_spellerpages\spellerpages\server-scripts\spellchecker.php
Line  76 -  $tempfile = ( $tempfiledir, 'aspell_data_' );
Found 1 occurrences.
Searched 2698 file(s), found 10 occurrences in 6 file(s)

Re: Cache-Problem

Posted: Sun May 28, 2006 4:24 pm
by Piratos
Das Problem ist in PHP 5.1.3 erledigt, wie im gleichen Artikel zu lesen ist.

Der Provider sollte updaten, am besten gleich auf 5.1.4  und nicht einfach Funktionen sperren (das ist für ihn wohl  einfacher).

Nachtrag:

Ich sehe gerade du hast ja schon 5.1.4 - deswegen ist es eine Frechheit vom Provider die Funktion mit solchen Argumenten zu sperren.

Re: Cache-Problem

Posted: Mon May 29, 2006 6:24 am
by nicob
Ok, vielen dank!

Ich werde da nochmal nachhaken...  ;)

Re: Cache-Problem

Posted: Thu Jun 22, 2006 3:00 am
by Top7up
I got to replace tempnam() function with newtempnam() (I got from php.net documentation comments).
The tempnam() function will not let you specify a postfix to the filename created. Here is a function that will create a new filename with pre and post fix'es. Not returns false if it can't create in the dir specified where tempnam() creates in the systems temp dir.

Code: Select all

function newtempnam($dir, $prefix, $postfix=''){
	/* Creates a new non-existant file with the specified post and pre fixes */
	
	if ($dir[strlen($dir) - 1] == '/') {
		$trailing_slash = "";
	} else {
		$trailing_slash = "/";
	}
	/*The PHP function is_dir returns true on files that have no extension.
	The filetype function will tell you correctly what the file is */
	if (!is_dir(realpath($dir)) || filetype(realpath($dir)) != "dir") {
		// The specified dir is not actualy a dir
		return false;
	}
	if (!is_writable($dir)){
		// The directory will not let us create a file there
		return false;
	}
	
	do{
		$seed = substr(md5(microtime().posix_getpid()), 0, 8);
		$filename = $dir . $trailing_slash . $prefix . $seed . $postfix;
	} while (file_exists($filename));
	$fp = fopen($filename, "w");
	fclose($fp);
	return $filename;
}
It worked for me perfectly ;)

Aziz Oraij

Re: Cache-Problem

Posted: Mon Nov 27, 2006 8:46 am
by leMich
I have the same problem with a cmsms 0.12 site since a few days !!

Warning: tempnam() has been disabled for security reasons in core.write_file.php on line 28

The "newtempname()" function of Top7up must be placed in the core.write_file.php (0.12) ??

Thanks!