php sortiert falsch, oder liegt es am Server?

Bash, Shell, PHP, Python, Perl, CGI
ts
Posts: 20
Joined: 2003-05-08 15:59

php sortiert falsch, oder liegt es am Server?

Post by ts »

hi, ich hab ein (für mich) seltsames Problem:

wenn ich den Inhalt eines Verzeichnisses auf meinem Server per PHP-Script ausgeben lasse, dann ist die Ausgabe unsortiert. Lasse ich das selbe Script auf einem Mietaccount laufen, so ist die Ausgabe (so wie es sein soll) sortiert.

Ausgabe mein Server: D4 D3 D6 D1 D5 D7 D2
Ausgabe Mietaccount: D1 D2 D3 D4 D5 D6 D7

ich habe folgendes Standart-Script verwendet:

Code: Select all

<?PHP
function show_dir($dir, $pos=2)
{
    if($pos == 2) 
    {
        echo "<hr><pre>";
    }
    $handle = @opendir($dir);
    while ($file = @readdir ($handle))
    {
        if (eregi("^.{1,2}$",$file))
        {
            continue;
        }
        if(is_dir($dir.$file))
        {
            printf ("% ".$pos."s <b>%s</b>n", "|-", $file);
            show_dir($dir.$file."/", $pos + 3);
        }
        else
        {
            printf ("% ".$pos."s %sn", "|-", $file);
        }
    }
    @closedir($handle);
    if($pos == 2)
    {
        echo "</pre><hr>";
    }
}
show_dir("./");
?>
Entweder liegt es an der PHP-Konfiguration (PHP 4.2.2) oder am Server (Suse8.1) oder am am Dateisystem (ReiserFS) ???

nach ein wenig googlen und lesen hier im scriptforum konnte ich keine Lösung finden bzw. hat auch noch niemand dieses Problem gehabt.
Sehr schön finde ich es, wenn Ihr mir ein paar Denkanstöße oder auch eine Lösung geben könntet.
Last edited by ts on 2003-05-28 09:33, edited 1 time in total.
rob
Posts: 82
Joined: 2002-06-03 21:53
Location: Brandenburg

Re: php sortiert falsch, oder liegt es am Server?

Post by rob »

Wie wäre es, wenn du die Eintraege selber mit Php-Funktionen sortierst?
ts
Posts: 20
Joined: 2003-05-08 15:59

Re: php sortiert falsch, oder liegt es am Server?

Post by ts »

Natürlich wäre dies eine Möglichkeit. Aber ich möchte das Problem an der Wurzel packen und nicht nur die Symptome vermeiden.
lufthansen
Posts: 390
Joined: 2002-09-24 17:31
Location: NRW

Re: php sortiert falsch, oder liegt es am Server?

Post by lufthansen »

huhu,
ich hatte mal das gleich problem ein verzeichnis wurde ausgelesen und das array sollte dann sortiert werden hat nicht geklappt ..

wodran es aber lag weiß ich nicht.(habe apache &&php neuninstalliert ich weiß schachsinn aber ich hatte sonst k.a. wodran es lag und ich hatte keine zeit nach der ursache zu forschen)
würde mich aber intressieren
kahler
Posts: 130
Joined: 2003-04-18 17:42
Location: /root

Re: php sortiert falsch, oder liegt es am Server?

Post by kahler »

hast du Mal den Sort Befehl von PHP ausprobiert??

Würde mich nur Mal interessieren, ob der den gleichen Effekt zeigt, oder ob es vielleicht wirklich an dem regulären Ausdruck liegt (oder verstehe ich das Script jetzt gerade falsch?!).
[tom]
Posts: 656
Joined: 2003-01-08 20:10
Location: Berlin

Re: php sortiert falsch, oder liegt es am Server?

Post by [tom] »

TS wrote:hi, ich hab ein (für mich) seltsames Problem:

[...]

Ausgabe mein Server: D4 D3 D6 D1 D5 D7 D2
Ausgabe Mietaccount: D1 D2 D3 D4 D5 D6 D7
Lass mich raten. Du hast die Verzeichnisse in unterschiedlicher Reihenfolge angelegt. Das ist ganz normal, dass die Verzeichnisse in der Reihenfolge angezeigt werden, wie sie auf dem Filesystem gespeichert sind. Wenn du eine andere Reihenfolge haben willst -> sortieren.

[TOM]
ts
Posts: 20
Joined: 2003-05-08 15:59

Re: php sortiert falsch, oder liegt es am Server?

Post by ts »

Danke an alle,

aber warum klappt denn auf dem anderen Server (Ext3) alles einwandfrei ohne zusätzliche Sortierung? Selbst wenn ich alle Dateien auf meinem Server lösche und danach wieder per ftp rüberkopiere bekomme ich das gleiche Ergebnis :cry:

Ich werde mal PHP neu installieren und sehen was dann passiert - obwohl es theoretisch nix verändert.

Ã?ber "sort" wollt ich das Problem nicht lösen, da es nur eine Beseitigung der Symptome aber nicht der Ursache ist.
kahler
Posts: 130
Joined: 2003-04-18 17:42
Location: /root

Re: php sortiert falsch, oder liegt es am Server?

Post by kahler »

TS wrote:...aber warum klappt denn auf dem anderen Server (Ext3) alles einwandfrei...
weil ext3 die Dateien anders verwaltet: Es führt eine Datenbank (Journal), wo drin steht, welche Verzeichnisse etc es gibt. Diese lässt sich leicht sortieren, was ext3 anscheinend auch tut, während bei ext2 das ganze ja quasie "flach" in der FAT steht und sich vermutlich daher nicht so einfach sortieren lässt...

...Bin kein Dateisystem Experte, aber das wäre so meine Ã?berlegung dabei (vielleicht habens die Programmierer bei ext2 aber auch einfach vergessen :lol:)
ts
Posts: 20
Joined: 2003-05-08 15:59

Re: php sortiert falsch, oder liegt es am Server?

Post by ts »

@kahler
ich benutze reiserfs. Ich hab auch schon überlegt, ob man irgendwo einen Sortieralgorythmus für ReiserFs in irgendeiner config festlegen kann - hab aber dazu bisher nix gefunden.
kahler
Posts: 130
Joined: 2003-04-18 17:42
Location: /root

Re: php sortiert falsch, oder liegt es am Server?

Post by kahler »

Wie gesagt, vielleicht ist diese sortier Funktion nicht in ReiserFS und anderen Dateisystemen integriert. Da müsste man am besten Mal die Entwickler fragen, was es damit auf sich hat, oder man nimmt sich Mal den Quellcode vor (viel Spass damit :lol:)
ts
Posts: 20
Joined: 2003-05-08 15:59

Re: php sortiert falsch, oder liegt es am Server?

Post by ts »

jo danke :?
ne Neuinstallation vpn PHP 4.2.2. hat nix gebracht.
kahler
Posts: 130
Joined: 2003-04-18 17:42
Location: /root

Re: php sortiert falsch, oder liegt es am Server?

Post by kahler »

TS wrote:ne Neuinstallation vpn PHP 4.2.2. hat nix gebracht.
Wie wir ja nun schon festgestellt haben, liegt es nicht an PHP, sondern vermutlich am Datei System. Das beste was du machen kannst, ist dich nicht auf die Sortierung des Dateisystems zu verlassen, sondern das ganze selbst mit sort() zu sortieren.
Dazu müsstest du halt das Script so umschreiben, dass die Ausgabe erst in ein Array erfolgt, dass dann sortiert werden kann.
[tom]
Posts: 656
Joined: 2003-01-08 20:10
Location: Berlin

Re: php sortiert falsch, oder liegt es am Server?

Post by [tom] »

TS wrote: Ã?ber "sort" wollt ich das Problem nicht lösen, da es nur eine Beseitigung der Symptome aber nicht der Ursache ist.
Falsch! Das ist ein vollkommen korrektes Verhalten. Wenn du es sortierst, passt du es lediglich deinen Wünschen an. Es will ja nicht jeder Dateien/Verzeichnisse nach einem Schema sortiert haben.

BTW: Dein Neuinstallieren erinnert mich an etwas.

Frage: Wie oft kannst du 7 von 86 abziehen?

Antwort: Du kannst so oft du willst 7 von 86 abziehen und es bleiben immer 79 über.

Mit anderen Worten. Auch die 3. Neuinstallation wird keine Veränderung hervorrufen. ;-)

[TOM]
gamecrash
Posts: 339
Joined: 2002-05-27 10:52

Re: php sortiert falsch, oder liegt es am Server?

Post by gamecrash »

TS wrote:ne Neuinstallation vpn PHP 4.2.2. hat nix gebracht.
Hm, sind des noch alte Windows-Angewohnheiten oder wie? ;)
ts
Posts: 20
Joined: 2003-05-08 15:59

Re: php sortiert falsch, oder liegt es am Server?

Post by ts »

@Tom + GameCrash
ja ich bin bekennender Mausschupser :oops:

cih ahtte mir schon vorher gedacht, dass ne Neuinstallation nix bringt, aber ich greif nach jedem Strohalm! Das Script soll bei mir genau so funzen, wie bei anderen Servern auch.

Mal sehen ob ich über die SuSE-Hotline was erreichen kann.
rob
Posts: 82
Joined: 2002-06-03 21:53
Location: Brandenburg

Re: php sortiert falsch, oder liegt es am Server?

Post by rob »

TS wrote: Mal sehen ob ich über die SuSE-Hotline was erreichen kann.
Hmm.
Ich sage dir eins: der Weg den du da einschlägst, ist falsch.
Ein Dateisystem ist nicht dazu da, etwas geordnet auszugeben, dazu sind immer Subfunktionen nötig.

Wenn du es via sort (o.ä.) sortieren lässt, erst dann erreichst du auf jedem System, das PHP installiert hat, die gleiche Funktionsweise.
ts
Posts: 20
Joined: 2003-05-08 15:59

Re: php sortiert falsch, oder liegt es am Server?

Post by ts »

ja das habe ich auch schon erkannt, trotzdem Danke.
Auf dem anderen Server, wo die Ausgabe alphabetisch ist, läuft PHP 4.2.3. - so werd ich mal ein Update von PHP versuchen, jedoch ist das (für mich) nicht so ganz trivial und ich suche immer noch ein HowTo dafür.
Last edited by ts on 2003-05-28 11:10, edited 1 time in total.
gamecrash
Posts: 339
Joined: 2002-05-27 10:52

Re: php sortiert falsch, oder liegt es am Server?

Post by gamecrash »

*g* Warum sortierst Du das ned einfach per Script? Ist zum Einen der geringste Aufwand und zum Anderen funktioniert das dann auf jedem Server... den ganzen Server umzubauen, nur damit man sich dann (vielleicht) eine Zeile im Script sparen kann, ist doch ziemlich schwachsinnig in meinen Augen...
kahler
Posts: 130
Joined: 2003-04-18 17:42
Location: /root

Re: php sortiert falsch, oder liegt es am Server?

Post by kahler »

Lasst ihn doch...

...anscheinend will er unsere Ratschläge ja nicht annehmen. Das mit dem sortieren via PHP steht schon im 2. Beitrag und er hat ja selbst zugegeben, dass die Server unterschiedliche Dateisysteme haben. Bei ext3 ist die Ausgabe anscheinend schon sortiert, bei reiserfs aber nicht.

Was ich dir, TS empfehlen kann, um dein Problem zu lösen: Wechsele zu ext3 und probiere, obs dann funktioniert. Aber das kann wohl nicht unbedingt Sinn der Sache sein.
[tom]
Posts: 656
Joined: 2003-01-08 20:10
Location: Berlin

Re: php sortiert falsch, oder liegt es am Server?

Post by [tom] »

@TS:

Ist das Dein Ernst? Bevor du die eine Zeile zum sortieren einfügst, was die richtigste, einfachste und schnellste Lösung ist, installierst du lieber irgendwas neu oder schlägst dich mit der Hotline rum? 8O

Dann ist dir wirklich nicht mehr zu helfen.

[TOM]
ts
Posts: 20
Joined: 2003-05-08 15:59

Re: php sortiert falsch, oder liegt es am Server?

Post by ts »

eigentlich habt ihr ja Recht, aber uneigentlich sollen alle meine Scripte auf dem neuen Server genauso laufen wie woanders auch - und schliesslich kann ich ja bei der Fehlersuche auch was lernen. Einfach nur einen Sortieralgorythmus in das Script einfügen ist zu einfach!
Das mit der Hotline klemm ich mir, da die ja wahnsinnig teuer ist.
Schade, dass niemand einen anderen Lösungsvorschlag, als die bisherigen, kennt. Ã?brigens hab ich das Script mittlerweile auf 11(!) anderen Servern getestet. Alle haben genau das Ergebniss gebracht wie es sein sollte: nähmlich eine alphabetisch geordnete Baumansicht des Verzeichnisses. Meist ist auf den anderen Servern PHP 4.2.3 oder jünger installiert. Ã?ber die Dateisysteme konnte ich nichts erfahren.
outofbound
Posts: 470
Joined: 2002-05-14 13:02
Location: Karlsruhe City

Re: php sortiert falsch, oder liegt es am Server?

Post by outofbound »

TS:

meines Erachtens begehst du einfach einen der schlimmsten Fehler, die man überhaupt machen
kann: Du verlässt dich auf Dinge, die von anderen gemacht werden.

Indem du die Sortiererei (Die PHP ja supereinfach kann) direkt in dein Script einbaust, machst
du das Script "Allround"- Fähig, und bist nicht von Versionen oder Filesystemen abhängig.

So schaffst du eine "Allgemeingültige" Lösung, die dein Script portabel macht, zukünftige
Fehlerquellen ausschliesst und somit auch spätere Probleme vermeidet.

Es ist dir vielleicht zu einfach, aber vergiss bitte nie, dass die einfachen, eleganten und
schnellen Lösungen (Vor allem was Implementierungszeit angeht) auch die besten sind.

Gruss,

Out
[tom]
Posts: 656
Joined: 2003-01-08 20:10
Location: Berlin

Re: php sortiert falsch, oder liegt es am Server?

Post by [tom] »

TS wrote:eigentlich habt ihr ja Recht, aber uneigentlich sollen alle meine Scripte auf dem neuen Server genauso laufen wie woanders auch
Eben - und wie das geht, haben wir jetzt mehrfach gepostet.

TS wrote: und schliesslich kann ich ja bei der Fehlersuche auch was lernen.
Das bezweifel ich inzwischen. Von den Hinweisen nimmst du nix an.

TS wrote:Einfach nur einen Sortieralgorythmus in das Script einfügen ist zu einfach!
Muß es denn 'ne schwierige oder komplexe Lösung sein? OK - nimm dir den Sourcecode von dem Filesystem deines geringsten Mißtrauens und schreib es um.

TS wrote:Schade, dass niemand einen anderen Lösungsvorschlag, als die bisherigen, kennt.
Was willst du? Einen richtigen Lösungsvorschlag oder einen, der dir einfach nur gefällt?

TS wrote:Ã?brigens hab ich das Script mittlerweile auf 11(!) anderen Servern getestet. Alle haben genau das Ergebniss gebracht wie es sein sollte: nähmlich eine alphabetisch geordnete Baumansicht des Verzeichnisses.
Du kannst es auch auf 8.712 anderen Servern testen. Und auf dem 8.713 Server wird deine Erwartungshaltung nicht erfüllt.

Kann es sein, dass du damit etwas überfordert bist? Naja - ich mach jetzt die Kiste auf:

*plonk*

[TOM]
gamecrash
Posts: 339
Joined: 2002-05-27 10:52

Re: php sortiert falsch, oder liegt es am Server?

Post by gamecrash »

@ [TOM] vergiss es... wenn er meint, dann soll er machen. Ich frag mich ja nur, was passiert, sollte der jemals beruflich proggen - ich als Chef würde den nach 5 Tagen rausschmeißen :p
hannesder3te
Posts: 10
Joined: 2003-01-16 15:49
Location: Hannover

Re: php sortiert falsch, oder liegt es am Server?

Post by hannesder3te »

TS wrote:eigentlich habt ihr ja Recht, aber uneigentlich sollen alle meine Scripte auf dem neuen Server genauso laufen wie woanders auch.
Wenn deine Scripts auf jedem Server laufen sollen, ist gerade die Methode mit sort() die richtige, da es sicherlich auch andere Server gibt, auf denen die Liste nicht alphabetisch geordnet ausgegeben wird (aus welchem Grund auch immer).