Sp33dy G0nz4l3s: Problem mit Dateiupload

Hi,
ich habe für meine Webseite ein Formular erstellt, mit dem Dateien hochgeladen werden können.

In dem localhost funktioniert es einwandfrei. Wenn ich es jedoch auf meinem Webspace hochlade, und versuche eine Datei hochzuladen kommt immer folgende Meldung:

Warning: uniqid() expects at least 1 parameter, 0 given in /home/www/web4/html/scripts/formmailer/check.inc.php on line 77

Warning: Cannot modify header information - headers already sent by (output started at /home/www/web4/html/scripts/formmailer/check.inc.php:77) in /home/www/web4/html/scripts/formmailer/check.inc.php on line 113

Der Link zum Formmailer ist: http://www.cs-erweiterungen.de/formmailer.php

In der Datei check.php heißt:
http://www.cs-erweiterungen.de/check.txt

Es wäre sehr nett wenn mir jemand helfen kann.

  1. Hallo,

    Hi,
    ich habe für meine Webseite ein Formular erstellt, mit dem Dateien hochgeladen werden können.

    ...hast du nicht "erstellt"...

    In dem localhost funktioniert es einwandfrei. Wenn ich es jedoch auf meinem Webspace hochlade, und versuche eine Datei hochzuladen kommt immer folgende Meldung:

    Warning: uniqid() expects at least 1 parameter, 0 given in /home/www/web4/html/scripts/formmailer/check.inc.php on line 77

    ...weil du sonst wüsstest das dein Script die Funktion uniqid() aufruft die nicht in deiner check.php ist.

    Aber die wird wohl in der function.inc.php sein...
    nur habe ich gerade nicht meine Glaskugel zur Hand.

    Nun mal im Ernst:
    Die Fehlermeldung sagt dir ja ganz klar und deutlich das diese einen Parameter erwartet, den sie aber nicht hat.
    Das gibt eine Fehlermeldung.
    Da du dann noch versucht eine header-ausgabe zu machen, diese aber nicht nach einer Ausgabe (auch ein Fehler ist eine Ausgabe) kommen darf, gibts weiterer Fehler...

    Gruss
    DieterF

    1. Ich habe uniqid() jetzt zu uniqid('') geändert und schon ging es :)

      Das uniqid  sorgt dafür, das jede hochgeladene Datei einen anderen Namen hat. Z.B. 463e060c71a9d.doc

      Jetzt habe ich noch ein letztes Problem. Die Dateien werden nun zwar in den richtigen Ordner hochgeladen und haben auch die richtige Dateigröße.

      Das Problem ist nun, das ich sie nicht von meinem Server herunterladen kann. Es steht immer folgendes da.

      html/uploads/463e060c71a9d.doc - Fehler aufgetreten - FTP-Fehler ist aufgetreten - 463e060c71a9d.doc kann nicht abgerufen werden.  Zugriff verweigert.  Möglicherweise gibt es die Datei nicht, oder die Ursache ist ein Problem bei den Berechtigungen.

      Dateivorgang nicht abgeschlossen. 1 Datei(en) oder Ordner wurde(n) nicht fertig gestellt.

      Wisst ihr warum ich sie nicht downloaden/öffnen kann?

      1. Ich grüsse den Cosmos,

        Möglicherweise gibt es die Datei nicht, oder die Ursache ist ein Problem bei den Berechtigungen.

        Pure Vermutung. Du nutzt PHP als Apache-Modul und dadurch hat die hochgeladene Datei als Besucher den User, unter dem auch der Apache läuft.
        Dann bleibt dir nur, der Datei nach dem Upload entsprechende Rechte zu geben. Ich denke, 666 sollte ausreichen.

        Möge das "Self" mit euch sein

        --
        Neulich dachte ich mir, einmal S/M ausprobieren wäre eine tolle Erfahrung. Also hab ich Windows gebootet ...
        ie:{ br:> fl:| va:| ls:& fo:{ rl:( n4:{ de:] ss:) ch:? js:| mo:) sh:( zu:)
        1. Pure Vermutung. Du nutzt PHP als Apache-Modul und dadurch hat die hochgeladene Datei als Besucher den User, unter dem auch der Apache läuft.
          Dann bleibt dir nur, der Datei nach dem Upload entsprechende Rechte zu geben. Ich denke, 666 sollte ausreichen.

          Kann ich das hier nachschauen ob ich PHP als solches Modul benutze?

          http://www.cs-erweiterungen.de/phpinfo.php

          1. Hi!

            Kann ich das hier nachschauen ob ich PHP als solches Modul benutze?
            http://www.cs-erweiterungen.de/phpinfo.php

            Ja, daran kannst du sehen, daß PHP als Apachemodul läuft.
            Das ist bei den meisten Hostern der Fall, weil es viele Vorteile gegenüber der CGI-Version bietet.
            Du solltest aber lieber mal die Dateirechte deiner hochgeladenen Dateien checken und ggf. ändern.

            Schöner Gruß,
            rob

            1. DANKE EUCH

              Klappt jetzt endlich! :)

            2. Ich grüsse den Cosmos,

              Das ist bei den meisten Hostern der Fall, weil es viele Vorteile gegenüber der CGI-Version bietet.

              Ausser Performancevorteile, welche denn?
              Ich bin der Meinung, das ich viel mehr Vorteile mit der CGI-Verison hab. Z.B. jammert keiner rum, das er/sie Probleme mit safe_mode hat oder eben die genannten Problem mit Dateiuploads usw. gibt es nicht.

              Vielleicht ein wenig OT in diesem Thread aber, wie ich finde, eine interessante Frage.

              Möge das "Self" mit euch sein

              --
              Neulich dachte ich mir, einmal S/M ausprobieren wäre eine tolle Erfahrung. Also hab ich Windows gebootet ...
              ie:{ br:> fl:| va:| ls:& fo:{ rl:( n4:{ de:] ss:) ch:? js:| mo:) sh:( zu:)
  2. Hi,

    Warning: uniqid() expects at least 1 parameter, 0 given in /home/www/web4/html/scripts/formmailer/check.inc.php on line 77

    also müsste das nicht so...
        $name = uniqid();
    ...sondern so...
        $name = uniqid($irgendwas);
    ...aussehen.

    Warning: Cannot modify header information - headers already sent by

    Das kommte nur durch die PHP-Fehlermeldung, die bereits geschrieben wurde. Danach kann der Header hier...
        Header("Location: ".$_POST['Redirect']);
    ... nicht mehr verändert werden.

    Interessant wäre, wie die uniqid aussieht, vermutlich hierdrin:
    scripts/comments/function.inc.php?

    Gruesse, Joachim

    --
    Am Ende wird alles gut.
  3. echo $begrüßung;

    In dem localhost funktioniert es einwandfrei. Wenn ich es jedoch auf meinem Webspace hochlade, und versuche eine Datei hochzuladen kommt immer folgende Meldung:

    Warning: uniqid() expects at least 1 parameter, 0 given in /home/www/web4/html/scripts/formmailer/check.inc.php on line 77

    Du hast lokal eine PHP-Version 5.irgendwas und auf dem Webspace noch 4.irgendwas. Der Parameter wurde ab Version 5.0.0 optional, wie das Handbuch zu uniqid() aufklärt.

    Es ist immer eine gute Idee, auf dem Entwicklungssystem mit den gleichen Versionen wie der Produktivumgebung zu arbeiten, um solche versionsabhängigen Probleme zu vermeiden.

    echo "$verabschiedung $name";