# Problem Dateiupload PHP



## eldrior (9. Mai 2017)

Hallo,

ich habe leider sehr wenig Ahnung von PHP und habe mir mit viel googlen folgendes kleines Script zusammengebaut/klaut, das eigentlich PDFs hochladen soll...



Spoiler: index.html





```
<html>
    <body>
        <p><h1>PDF Uploader</h1></p>

        <form action="upload.php" method="post" enctype="multipart/form-data">
            PDF Datei ausw&auml;hlen:
            <input type="file" name="fileToUpload" id="fileToUpload">
            <input type="submit" value="Hochladen" name="submit">
        </form>
    </body>
</html>
```






Spoiler: upload.php





```
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
    if(($_FILES['fileToUpload']['type'] == 'application/pdf')) {
        echo "File is a pdf - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not a pdf.";
        $uploadOk = 0;
    }
}
// Check if file already exists
if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
    } else {
        echo "Sorry, there was an error uploading your file."; 
    }
}
?>
```



Das Auswählen der Datei im HTML Formular funktioniert wunderbar, ich bekomme allerdings folgende Ausgabe:
File is a pdf - .Sorry, there was an error uploading your file.

Das heißt für mich eigentlich, dass die Datei korrekt als PDF erkannt wurde, nicht zu groß ist, ich aber beim Kopieren irgendeinen Fehler gemacht habe. Kann mir da jemand weiterhelfen?

Vielen Dank im Voraus!


----------



## Thallius (10. Mai 2017)

und du bist sicher das es einen Ordner uploads/ gibt ?

Mach doch mal ein


```
echo $_FILES["fileToUpload"]["tmp_name"]."<br>";
echo $target_file."<br>";
```

vor den move befehl.

Gruß

Claus


----------



## eldrior (10. Mai 2017)

Moin,
danke erstmal für deine Antwort.

Ja, ich bin mir sicher, dass uploads existiert. Ich habe folgende Ordnetstruktur (auszugsweise):
/ uploads
/ var
---/ www
------/ testprojekt
---------/ uploads
---------/ index.html
---------/ upload.php

Die Ausgabe mit den beiden zusätzlichen Zeilen lautet:


```
File is a pdf - ./tmp/phphWLfpt
uploads/test.pdf
Sorry, there was an error uploading your file.
```


Danke und VG
Stephan


----------



## Bananabert (10. Mai 2017)

Sieht eigenartig aus dein Problem.

Falls du es nicht schon gelöst hast, schau mal, ob auf dem Ordner "uploads" überhaupt Rechte zum Schreiben vorhanden sind. Ansonsten, reduziere ggf. deinen Code auf NUR den Upload.

z.B.

index.html

```
<html>
    <body>
        <p><h1>PDF Uploader</h1></p>

        <form action="upload.php" method="post" enctype="multipart/form-data">
            PDF Datei ausw&auml;hlen:
            <input type="file" name="fileToUpload" id="fileToUpload">
            <input type="submit" value="Hochladen" name="submit">
        </form>
    </body>
</html>
```

upload.php

```
<?
if(array_key_exists('fileToUpload', $_FILES)) {
    if(move_uploaded_file($_FILES['fileToUpload']['tmp_name'], 'uploads/'.$_FILES['fileToUpload']['name'])) {
        print_r( "file " . $_FILES['fileToUpload']['name'] . " was uploaded");
    } else {
        print_r("file " . $_FILES['fileToUpload']['name'] . " was NOT uploaded");
    }
}
?>
```


----------



## eldrior (10. Mai 2017)

Bananabert hat gesagt.:


> schau mal, ob auf dem Ordner "uploads" überhaupt Rechte zum Schreiben vorhanden sind



Ja, das ist peinlich. Ich Schreibrechte für meinen User, aber nicht für den Apache User verteilt, jetzt funktioniert alles. 

Vielen Dank nochmal!


----------

