"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

PHP: mkdir + thumb-problem

fatmike182 19.01.2009 - 12:01 1123 13
Posts

fatmike182

Agnotologe
Registered: Oct 2005
Location: VIE
Posts: 4223
Hallo,
ich möchte, dass beim Absenden des Formulars (jeder Beitrag hat eine autoincrement ID) die img-src-Tags geändert werden (da man davor die ID noch nicht kennt).
Weiters soll ein Ordner erstellt werden mit dem Namen der ID und dorthin kommen dann auch die Bilder.
Was mach ich falsch, dass das nicht funktioniert?

thumb problem siehe Post von 26.1.

Code: PHP
// nächste autoincrement Nummer = ID wird bestimmt um bei den img-URLs den Ordnernamen (=ID) anzugeben
		$next_id_query = mysql_query("SHOW TABLE STATUS LIKE '$dbtable'") 
			or die ("<p>Couldn't get the next autoincrement ID, stupid situation, nm</p>");
		$next_id_row = mysql_fetch_assoc($next_id_query);
		$next_id = $next_id_row['Auto_increment'];
		$abstract_edited = str_replace('news/(ID)/', 'news/'.$next_id.'/', $abstract_edited);
		article_edited = str_replace('news/(ID)/', 'news/'.$next_id.'/', article_edited);
		
		mkdir('/'.$next_id) or die ("<p>Was too drunk to create a folder, it' s my fault I know</p>");

Was passiert: nach dem Absenden sollte die selbe Seite dargestellt werden, aber er findet sie nicht.
Springt er dann automatisch in das neuangelegte VErzeichnis?
Bearbeitet von fatmike182 am 26.01.2009, 00:45

Spikx

My Little Pwny
Avatar
Registered: Jan 2002
Location: Scotland
Posts: 13504
Nach dem Absenden des Formular sollte "der Browser dort stehen", was bei der action angegeben ist, außer du leitest die Abfrage mit header("Location: ..."); um.

fatmike182

Agnotologe
Registered: Oct 2005
Location: VIE
Posts: 4223
vor dem Einfügen der mkdir-Zeile hat alles wunderbar funktioniert.
Im form-tag steht bei action "<? $_SERVER['PHP_SELF']; ?>"
btw: es wird auch zzt kein directory erstellt, also hats da generell was

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4282
schreibrechte vorhanden? schon mal mit full-path versucht?

fatmike182

Agnotologe
Registered: Oct 2005
Location: VIE
Posts: 4223
selbst dann sollte er ja in localhost den Ordner erstellen (was nicht passiert)
Schreibrechte hab ich

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4282
wenn php deinen pfad als fullpath interpretiert, dann müßtest du schon schreibrechte auf / haben. probiers halt einfach aus, mehr als daß es nichts bringt, kann ja nciht passieren ;)

fatmike182

Agnotologe
Registered: Oct 2005
Location: VIE
Posts: 4223
:bash:,
just my 2 Dollar :D

fatmike182

Agnotologe
Registered: Oct 2005
Location: VIE
Posts: 4223
weiter gehts:
soweit funktioniert alles, hab jetzt ein file dazu gebastelt, das thumbs von allen files in einem ordner erstellt.
Irgendwas hats da - es werden nicht alle files gethumbed. Scheinbar alte files nicht (?)
Wie kann ich das beheben oder warum ist das so?
(zum screenie. Ordner: der Ordner mit den Originalen, Browser-pic: die thumbs, im thumbsordner befinden sich auch nur die gleichen pics)
click to enlarge

edit: ich seh grad, am Datum liegts auch nicht wirklich, gibt ein älteres file, das gethumbed wurde. an der größe glaub uch auch nicht, gibt noch ein 1MB-Foto das ein thumb hat.
Möchte aber trotzdem verhindern, dass das später nicht mehr passiert oder zumindest der fehler bekannt ist
Bearbeitet von fatmike182 am 26.01.2009, 00:54

Spikx

My Little Pwny
Avatar
Registered: Jan 2002
Location: Scotland
Posts: 13504
Und den code holen wir uns alle aus unseren magischen Glaskugeln? ;)

COLOSSUS

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12070
Zitat von kleinerChemiker
wenn php deinen pfad als fullpath interpretiert, dann müßtest du schon schreibrechte auf / haben. probiers halt einfach aus, mehr als daß es nichts bringt, kann ja nciht passieren ;)

Willst du damit zum Ausdruck bringen, dass wenn du dem PHP-Interpreter mittels mkdir() mitteilst, dass du z. B. unter "/some/path/" (wobei du fuer das Verzeichnis "path" schreib- und ausfuehrberechtigt bist) ein neues Unterverzweichnis erstellen willst, du in / ebenfalls Schreib- und Ausfuehrrechte benoetigst?

Wenn dem so ist kann ich dich naemlich entwarnen - das ist (zumindest unter UNIX und GNU/Linux) keinesfalls so. Ob man einen Pfad absolut oder relativ zum CWD angibt ist den Libraryfunktionen, die diese Aktionen dann tatsaechlich ausfuehren, voellig wurscht.

fatmike182

Agnotologe
Registered: Oct 2005
Location: VIE
Posts: 4223
naja, ich wüsste leider nicht, welcher Code-Teil da sinnvoll wäre. Wie man sieht sind alle Bilder bis auf Picture 7 & 8 gethumbed worden und ich kann mir nicht erklären, warum gerade diese.
Aber code wäre zum thumben:
Code: PHP
 
function create_thumbs($file_dir, $file, $width, $height, $type, $longer_2be, $preview_quality, $save_dir)
	{
	switch ($type)
	{
		case 1:
			$image = imagecreatefromgif($file_dir."/".$file);
			header('Content-type: image/gif');
			break;
		case 2: 
			$image = imagecreatefromjpeg($file_dir."/".$file);
			header('Content-type: image/jpeg');
			break;
		case 3: 
			$image = imagecreatefrompng($file_dir."/".$file);
			header('Content-type: image/png');
			break;
		default:
		return false;
		break;	
	}
	
	if ($width < $height)
	{
		$resize_factor = (float) ($height/$longer_2be);
		$new_height = (int) $longer_2be;
		$new_width = round($width/$resize_factor);
	}
	else
	{
		$resize_factor = (float) ($width/$longer_2be);
		$new_width = (int) $longer_2be;
		$new_height = round($height/$resize_factor);
	}
	
	$preview = imagecreatetruecolor($new_width, $new_height);
	imagecopyresampled($preview, $image, 0,0,0,0, $new_width, $new_height, $width, $height);
	imagejpeg($preview, $save_dir.$file, $preview_quality);
};

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Dazu müsste man wissen, was das für Bilder sind; Welche Formate (PNG, JPEG, ...?), was drauf ist (PNG-Transparenz?) und welchen Aspect-Ratio sie haben.

Ausserdem,
Code:
error_reporting(E_ALL);
Ohne Error Output geht nix.

Übrigens hab ich genau so nen Code wo rumliegen, kann mich an Probleme mit transparenten PNGs erinnern

fatmike182

Agnotologe
Registered: Oct 2005
Location: VIE
Posts: 4223
waren screenshots, so wie die anderen pngs auch (wenn nix dabeisteht isses png, 2 sind jpgs, steht dann aber dabei), Transparenz solle also keine da sein.
bzgl error-rep:
das kommt doch einfach in die 1. php Zeile und gilt dann fürs ganze Dokument, oder?
Error schiebt er keinen leider

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Schon mal in die Console geschaut? (Läuft ja am Mac oder? Sonst Apache error.log)

"ssdad" geht mir übrigens auch ab... bist du dir sicher dass du nicht irgendwo zum testen ein Limit eingebaut hast? Oder kommst du in ein Timeout, Memory aus, ...? (siehe console)

error_reporting(E_ALL) gilt für den rest der runtime, funktioniert aber nicht unbedingt überall. z.B. parsing Fehler werden da nicht reported, eh klar, weil PHP die Anweisung ja erst ausführen würde wenn bereits geparsed wurde, ... Sowas umgehst du mit einem einfachen wrapper-file:
Code: PHP
error_reporting(E_ALL);
include("myfilewithparseerrors.php");

Ich glaub auch nicht (mehr) dass es am Thumb-Code liegt, weil dann hättest du wahrscheinlich kein Thumb drin, aber trotzdem die Zeile im Output (halt ohne Bild)
Bearbeitet von watchout am 09.02.2009, 12:44
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz