Umstellung auf PHP 5.3.14

Allgemeiner Support zum phpBB 2 Board und phpBB 2 Modifikationen
Forumsregeln
Auch wenn hier der Support für phpBB 2 weiterhin aufrecht erhalten bleibt, weisen wir darauf hin, dass das phpBB 2 nicht mehr offiziell unterstützt und weiterentwickelt wird!
Antworten
Benutzeravatar
volker58
Beiträge: 724
Registriert: Mo 27.Dez, 2004 19:22
Wohnort: Annaberg-Buchholz
Kontaktdaten:

Umstellung auf PHP 5.3.14

Beitrag von volker58 »

hallo,
die haben den server von 5.2 auf 5.3. umgestellt. nun habe ich 2 fehlermeldungen
Warning: trim() expects parameter 1 to be string, array given in /is/htdocs/wp1065303_7APAYOCYXB/garten/includes/functions_arcade.php on line 463

Warning: Cannot modify header information - headers already sent by (output started at /is/htdocs/wp1065303_7APAYOCYXB/garten/includes/functions_arcade.php:463) in /is/htdocs/wp1065303_7APAYOCYXB/garten/includes/page_header.php on line 1749
in der functions_arcade.php sieht es da so aus

Code: Alles auswählen

function get_ina_extension($name)
{
	$extension		= strrchr(strtolower($name), '.');
	$extension[0]	= ' ';
	$extension		= strtolower(trim($extension));
	
	return $extension;
}
was muß ich denn da ändern?
Gruss Volker

http://www.fuchsienfreunde.de
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Umstellung auf PHP 5.3.14

Beitrag von oxpus »

Hallo Volker,

der Fehler liegt in der Zeile

Code: Alles auswählen

$extension[0]   = ' ';
Damit wird $extension zum Array.
Der Autor wollte sicherlich dieses schreiben:

Code: Alles auswählen

$extension{0}   = ' ';
Unterschied:
[] definiert einen Key, u. a. wird so eine Variable in ein Array umgewandelt.
{} definiert eine Position in einem String/Array. {0} wäre demnach die erste Stelle, was hier ja der Punkt ist, der ersetzt werden soll.

Der gesamte Codeblock wäre so aber geschickter gelöst:

Code: Alles auswählen

function get_ina_extension($name)
{
	$path_data = pathinfo($name);
	echo $path_data['extension'];
}
Das ist auf jeden Fall sicherer und auch deutlich schneller, da die Funktionen strrchr(), strtolower() und trim() allesamt immer recht lange brauchen.
Das fällt zwar in diesem Fall nicht spürbar ins Gewicht, aber jedes Quentchen Performance macht die gesamte Anwendung immer auch ein Stück schneller. Und wenn es nur Bruchteile von Millisekunden je Anweisung/Funktion sind, in Summe kann das schon sehr viel ausmachen.
Zumal der Anwender, der die Seite besucht, auch nicht gerne auf etwas warten möchte, ist jeder Klick eh schon gefühlt zu lang...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
volker58
Beiträge: 724
Registriert: Mo 27.Dez, 2004 19:22
Wohnort: Annaberg-Buchholz
Kontaktdaten:

Re: Umstellung auf PHP 5.3.14

Beitrag von volker58 »

wie immer traumhaft für deine schnelle und informative hilfe, DANKE! :)
Gruss Volker

http://www.fuchsienfreunde.de
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Umstellung auf PHP 5.3.14

Beitrag von oxpus »

Kein Ding.
Dafür bin ich ja da. :cool:
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Dungeonwatcher
Beiträge: 1055
Registriert: Sa 19.Feb, 2005 01:16
Wohnort: Berlin
Kontaktdaten:

Re: Umstellung auf PHP 5.3.14

Beitrag von Dungeonwatcher »

Moin großer Meister! :cool:

Ich klinke mich mal mit ein. Demnächst stehe ich auch vor dem Problem der Umstellung auf die aktuelle PHP Version.

Ich habe in meinem phpbb2 Forum mal nach

Code: Alles auswählen

$extension[0]
gesucht und bin auch in der funktions_attach.php fündig geworden:

Code: Alles auswählen

function get_extension($filename)
{
	if (!stristr($filename, '.'))
	{
		return '';
	}
	$extension = strrchr(strtolower($filename), '.');
	$extension[0] = ' ';
	$extension = strtolower(trim($extension));
	if (is_array($extension))
	{
		return '';
	}
	else
	{
		return $extension;
	}
}
Den Unterschied von [] und {} habe ich verstanden und entsprechend geändert.

Nur wie wäre dein Vorschlag:
oxpus hat geschrieben:Der gesamte Codeblock wäre so aber geschickter gelöst:

Code: Alles auswählen

function get_ina_extension($name)
{
	$path_data = pathinfo($name);
	echo $path_data['extension'];
}
entsprechend umzusetzen?
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Umstellung auf PHP 5.3.14

Beitrag von oxpus »

@Volker
Ich habe einen kleinen Fehler in deinem Code, wenn du die 2. Variante verwenden willst.
Die muss nämlich so lauten:

Code: Alles auswählen

    function get_ina_extension($name)
    {
       $path_data = pathinfo($name);
       return $path_data['extension'];
    }
@Dungeonwatcher
So schwer ist das nun wirklich nicht, oder?

Code: Alles auswählen

function get_extension($filename)
{
   if (!stristr($filename, '.'))
   {
      return '';
   }
   $path_data = pathinfo($filename);
   return $path_data['extension'];
}
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Dungeonwatcher
Beiträge: 1055
Registriert: Sa 19.Feb, 2005 01:16
Wohnort: Berlin
Kontaktdaten:

Re: Umstellung auf PHP 5.3.14

Beitrag von Dungeonwatcher »

Moin, moin! :cool:
oxpus hat geschrieben:@Dungeonwatcher
So schwer ist das nun wirklich nicht, oder?
Das sagst du. Ich tue mich immer sehr schwer mit Funktionen. ^6

THNX

Bye
Antworten