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-ID: 337515

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

Ausgedruckt am: 22.11.2024 um 05:11 Uhr

tomolpi
tomolpi 11.05.2017 um 20:57:25 Uhr
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!
132895
132895 11.05.2017 aktualisiert um 21:38:49 Uhr
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ß
MrCount
MrCount 12.05.2017 um 07:32:09 Uhr
Goto Top
Servus!

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

slash1
Yanmai
Yanmai 12.05.2017 um 16:23:29 Uhr
Goto Top
Das verstehe ich nicht :/
132895
132895 12.05.2017 aktualisiert um 16:30:20 Uhr
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;
Yanmai
Yanmai 12.05.2017 um 16:37:06 Uhr
Goto Top
Aber das funktioniert auch nicht :/
132895
132895 12.05.2017 aktualisiert um 16:37:59 Uhr
Goto Top
Zitat von @Yanmai:
Aber das funktioniert auch nicht :/
Funktioniert nicht, ist kein Fehlermeldung in eine Admin-Forum!
Yanmai
Yanmai 12.05.2017 um 16:39:51 Uhr
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".
132895
132895 12.05.2017 aktualisiert um 16:46:46 Uhr
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
Yanmai
Yanmai 12.05.2017 um 16:48:05 Uhr
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
132895
132895 12.05.2017 aktualisiert um 16:54:34 Uhr
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.
Yanmai
Yanmai 12.05.2017 um 16:56:15 Uhr
Goto Top
Hä? Wo, ich stehe gerade auf dem Schlauch face-sad
132895
132895 12.05.2017 aktualisiert um 16:57:55 Uhr
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?
Yanmai
Yanmai 12.05.2017 um 17:03:17 Uhr
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
132895
Lösung 132895 12.05.2017 aktualisiert um 17:15:05 Uhr
Goto Top
Dann hat der Server-Prozess keine Schreibberechtigungen im Zielverzeichnis ...
Yanmai
Yanmai 12.05.2017 um 17:16:55 Uhr
Goto Top
Und wie bekomme ich es hin, dass der Server-Prozess im Zielverzeichnis Schreibrechte hat?
132895
132895 12.05.2017 aktualisiert um 17:23:38 Uhr
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.
Yanmai
Yanmai 12.05.2017 um 17:27:33 Uhr
Goto Top
Jetzt verstehe ich nichts mehr
mrtux
mrtux 12.05.2017 um 19:10:56 Uhr
Goto Top
Hi!

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

mrtux
132895
132895 12.05.2017 aktualisiert um 19:20:42 Uhr
Goto Top
Da hast du recht, wenn's dann noch "vom opi" kommt ist endgültig Feierabend face-smile
Yanmai
Yanmai 12.05.2017 um 23:23:21 Uhr
Goto Top
Wie kann ich das Problem nun lösen? Ich habe einen ganz normalen WebServer gemietet
132895
Lösung 132895 12.05.2017 aktualisiert um 23:38:15 Uhr
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.
Yanmai
Yanmai 13.05.2017 um 10:58:22 Uhr
Goto Top
Sorry, ich bin gerade mal 16 und beschäftige mich mit den Grundlagen von PHP