yanmai
Goto Top

ZIP-Datei auf Server speichern

Hallo ihr Administratoren,
ich möchte eine ZIP-Datei auf einem Server speichern. Dabei habe ich schonmal diesen Code:

<?php
    if(isset($_POST["btn_zip"]))  
    {
        $output = "";  
        if($_FILES['zip-file']['name'] != '') {  
            $file_name = $_FILES['zip-file']['name'];  
            $array = explode(".", $file_name);  

            $name = $array;
            $ext = $array[1];
            
            if($ext == "zip") {  
                $path = "html/sozi-umfrage";  
                $location = $path . $file_name;
            
                if(move_uploaded_file($_FILES['zip-file']['name'], $location)) {  
                    $zip = new ZipArchive;
                    echo "Success";  
                } else {
                    echo "error";  
                }
            } else {
                echo "False ext";  
            }
        } else {
            echo "1";  
        }
    } else {
        echo "2";  
    }
?>

Aber als Servermeldung bekomme ich immer error. Wo ist der Fehler?

Content-Key: 337515

Url: https://administrator.de/contentid/337515

Printed on: April 20, 2024 at 04:04 o'clock

Member: tomolpi
tomolpi May 11, 2017 at 18:57:25 (UTC)
Goto Top
Zitat von @Yanmai:
Aber als Servermeldung bekomme ich immer error. Wo ist der Fehler?
Füge mal
ini_set('display_errors', 1);  
ini_set('display_startup_errors', 1);  
error_reporting(E_ALL);
in dein Skript ein (ganz oben hin). Welche Meldung wird dir dann ausgegeben? Dieser Ausgabecode steht bei mir übrigens in jedem Skript welches ich entwickle. Erleichtert dir das Debugging ungemein. Aber später für den realen Betrieb wieder rausnehmen!
Mitglied: 132895
132895 May 11, 2017 updated at 19:38:49 (UTC)
Goto Top
$path = "html/sozi-umfrage";
$location = $path . $file_name;
Fällt dir da wirklich nichts auf?? Waren heute zu wenig "slashes" im Angebot face-smile?

Gruß
Member: MrCount
MrCount May 12, 2017 at 05:32:09 (UTC)
Goto Top
Servus!

@Yanmai: Hier ist mal einer.
Nutze ihn weise... face-wink

slash1
Member: Yanmai
Yanmai May 12, 2017 at 14:23:29 (UTC)
Goto Top
Das verstehe ich nicht :/
Mitglied: 132895
132895 May 12, 2017 updated at 14:30:20 (UTC)
Goto Top
Klarer Freitag, dir fehlt ein Backslash zwischen Pfad und Dateiname!! Ich glaube du brauchst eine Brille ...
$path = "html/sozi-umfrage/";  
$location = $path . $file_name;
Member: Yanmai
Yanmai May 12, 2017 at 14:37:06 (UTC)
Goto Top
Aber das funktioniert auch nicht :/
Mitglied: 132895
132895 May 12, 2017 updated at 14:37:59 (UTC)
Goto Top
Zitat von @Yanmai:
Aber das funktioniert auch nicht :/
Funktioniert nicht, ist kein Fehlermeldung in eine Admin-Forum!
Member: Yanmai
Yanmai May 12, 2017 at 14:39:51 (UTC)
Goto Top
Ich habe den Code von tomopi genommen und ganz oben im Script eingefügt. Wenn ich einen ZIP hochlade, bekomme ich von der PHP Datei nur die Meldung "error".
Mitglied: 132895
132895 May 12, 2017 updated at 14:46:46 (UTC)
Goto Top
den Code von tomopi genommen
tomopi?

Wenn du bei move_uploaded_file den falschen Dateinamen angibst ist klar das das nicht funktionieren kann, denn auf dem Server wird die Datei beim Upload mit einem temporären Dateinamen versehen (tmp_name), deswegen nutzt man diesen:
move_uploaded_file($_FILES['zip-file']['tmp_name'], $location)  
Ab und zu in die Doku schauen tut nicht weh...
http://php.net/manual/de/function.move-uploaded-file.php
http://php.net/manual/en/features.file-upload.post-method.php
Member: Yanmai
Yanmai May 12, 2017 at 14:48:05 (UTC)
Goto Top
Jetzt bekomme ich diese Meldung:


Warning: move_uploaded_file(/html/sozi-umfrage/test.zip): failed to open stream: No such file or directory in /var/www/web23442894/html/sozi-umfrage/test/server.php on line 20

Warning: move_uploaded_file(): Unable to move '/var/www/web23442894/phptmp/php1M3Pcp' to '/html/sozi-umfrage/test.zip' in /var/www/web23442894/html/sozi-umfrage/test/server.php on line 20
error
Mitglied: 132895
132895 May 12, 2017 updated at 14:54:34 (UTC)
Goto Top
Ich habe doch oben geschrieben das du zusätzlich dem Pfad den Slash hinzufügen musst ... denn wenn es das Zielverzeichnis nicht gibt kann er das File nicht dorthin verschieben.
Denn hier:
$path = "html/sozi-umfrage/";
fehlte der Slash am Ende bei dir.
Und natürlich immer bedenken ob du relative oder absolute Pfade verwendest. Dieser Pfad hier ist "relativ" zum PHP-Script zu betrachten.
Member: Yanmai
Yanmai May 12, 2017 at 14:56:15 (UTC)
Goto Top
Hä? Wo, ich stehe gerade auf dem Schlauch face-sad
Mitglied: 132895
132895 May 12, 2017 updated at 14:57:55 (UTC)
Goto Top
Zitat von @Yanmai:

Hä? Wo, ich stehe gerade auf dem Schlauch face-sad
Oh mann, Zeile 13 findest du wohl noch face-sad face-sad, ganz schwarzer Freitag heute .... hast du gesoffen?
Member: Yanmai
Yanmai May 12, 2017 at 15:03:17 (UTC)
Goto Top
Aber ich habe doch schon "html/sozi-umfrage/" gemacht, aber es funktioniert immer noch nicht. Ich bekomme immer noch die Meldung mit den 2 Warnings
Mitglied: 132895
Solution 132895 May 12, 2017 updated at 15:15:05 (UTC)
Goto Top
Dann hat der Server-Prozess keine Schreibberechtigungen im Zielverzeichnis ...
Member: Yanmai
Yanmai May 12, 2017 at 15:16:55 (UTC)
Goto Top
Und wie bekomme ich es hin, dass der Server-Prozess im Zielverzeichnis Schreibrechte hat?
Mitglied: 132895
132895 May 12, 2017 updated at 15:23:38 (UTC)
Goto Top
Zitat von @Yanmai:

Und wie bekomme ich es hin, dass der Server-Prozess im Zielverzeichnis Schreibrechte hat?
Ist das dein ernst?
chmod u+w /pfad
Wenn der Webserver User der Eigentümer ist, aber das sind nunmal Unix-Grundlagen die du überall nachlesen kannst!
Aber beachten muss man auch wen das ganze auf Servern wie CentOS läuft das hier eine zweite Security-Schicht (selinux) aufpasst dessen Regeln du anpassen musst.
Member: Yanmai
Yanmai May 12, 2017 at 15:27:33 (UTC)
Goto Top
Jetzt verstehe ich nichts mehr
Member: mrtux
mrtux May 12, 2017 at 17:10:56 (UTC)
Goto Top
Hi!

Zitat von @132895:
tomopi?
Da siehst Du mal wie schnell man altert...besonders Freitags.. face-big-smile

mrtux
Mitglied: 132895
132895 May 12, 2017 updated at 17:20:42 (UTC)
Goto Top
Da hast du recht, wenn's dann noch "vom opi" kommt ist endgültig Feierabend face-smile
Member: Yanmai
Yanmai May 12, 2017 at 21:23:21 (UTC)
Goto Top
Wie kann ich das Problem nun lösen? Ich habe einen ganz normalen WebServer gemietet
Mitglied: 132895
Solution 132895 May 12, 2017 updated at 21:38:15 (UTC)
Goto Top
Zitat von @Yanmai:

Wie kann ich das Problem nun lösen? Ich habe einen ganz normalen WebServer gemietet
Einen 'normalen' Webserver gibt es nicht. Ein Webserver hat immer ein OS und eine Betriebssoftware (Apache/Nginx/IIS...) du Clown!
Geb den richtigen Pfad an, stelle sicher das das Verzeichnis existiert und stell sicher das der Webserver auf das Verzeichnis schreiben darf, stelle in der Config sicher das Files überhaupt hochgeladen werden dürfen, dann klappt das 100%!!!!!! Dein Pfad ist relativ zum php Skript, wenn du verstehst was ich meine...aber bei 2,5Promille intus seh ich da schwarz.
Member: Yanmai
Yanmai May 13, 2017 at 08:58:22 (UTC)
Goto Top
Sorry, ich bin gerade mal 16 und beschäftige mich mit den Grundlagen von PHP