2011-01-05 17 views
0

Das Seltsamste passiert ... Ich habe einen Webshop in PHP erstellt. Alles hat gut geklappt, aber als wir die Website von unserem FTP-Server in ihren verschoben haben, sind wir auf ein Problem gestoßen. Wir sind nicht in der Lage Bilder mehr hochladen ...Ein Foto hochladen PHP

 if (file_exists("../productimages/" . $_FILES["picture"]["name"])) 
    { 
     $feedback = "<div class=\"voegproducttoefeedback\">Please change name of product<b><big> \"".$_FILES["picture"]["name"] . "\" 
     </big></b>The name already occurs in the database</div> "; 
    } else 
     { 

     $tmp_name = $_FILES["picture"]["tmp_name"]; 
     $name = $_FILES["picture"]["name"]; 
     move_uploaded_file($tmp_name, "../productimages/$name"); 


     if(file_exists("../productimages/$name")) { 
     $feedback2 = "succeed"; 
     } 
     else { 
       $feedback2 = "failed"; 
     } 

    if ($product->saveproduct($_DB)) { 
     $feedback = "<div class=\"voegproducttoefeedback\">Product <b><big>\"".$product->naam."\"</big></b> created with succes</div>"; 
     } else { 
     $feedback = "<div class=\"voegproducttoefeedback\">Not enough information to create product</div>"; 
     } 
    }}}?> 

Antwort

5

Versuchen Sie, die Zielverzeichnisberechtigungen zu ändern (../productimages/)

+0

Vielleicht hat Michiel nicht einmal Zugriff auf '../' auf dem anderen Server. – Lipis

+0

Stellen Sie außerdem sicher, dass das Verzeichnis an diesem relativen Speicherort vorhanden ist. – Phoenix

+0

Direkt auf Produktbilder und die Wurzel (httpdocs) sind 775. Mehr als genug, ich hoffe :) @Phoenix, was meinst du? – Michiel

0

Wie Goo sagt, Berechtigungen überprüfen, sondern auch dafür sorgen, dass PHP konfiguriert ist, um Uploads zuzulassen und dass die maximale Upload-Größe korrekt eingestellt ist.

Überprüfen Sie, ob file_uploads auf 'on' gesetzt ist und upload_max_filesize auf ein vernünftiges Limit gesetzt ist.

+0

Aber das gleiche Skript funktioniert auf meinem privaten Server ... Nur nicht auf ihre ... Ist das normal? – Michiel

+0

Ja, das ist normal - obwohl die Skripts identisch sind, können sich die zugrunde liegenden Umgebungen (sowohl PHP als auch das Host-Betriebssystem) unterscheiden. Beim Hochladen von Dateien müssen Sie darauf achten, dass eine Reihe von Konfigurationen korrekt eingestellt ist. Sogar der Webserver könnte anders konfiguriert sein, was zu Problemen führen würde, aber dies ist in Ihrer Instanz weniger wahrscheinlich. – Purpletoucan

+0

Ok, ich werde es versuchen. Danke im Voraus! – Michiel

0

Wenn Sie Zugriff darauf haben, überprüfen Sie Ihre PHP-Fehlerprotokolle.

Ihr Host hat höchstwahrscheinlich keine Schreibberechtigungen für das Konto aktiviert, das für den PHP-Prozess zuständig ist. Sie müssen sehen, ob sie das aktivieren können.

+0

Wie kann ich auf sie zugreifen? Ich habe Zugriff auf die Root des Servers, aber ich glaube, ich habe gerade eine Art von Konto erhalten, um es auf das FTP hochzuladen. Nicht der Root-Zugriff selbst. – Michiel

+0

Hängt vom Setup Ihres Hosts ab. Sie müssen sich mit ihnen in Verbindung setzen, um herauszufinden, welchen Zugang (falls vorhanden) sie diesen Protokollen geben. –

0

Ok, Problem (teilweise) gelöst. Ich änderte die Berechtigungen von Produktbildern ... Aber der Erfolg des Prozesses erforderte eine 777 Erlaubnis ... Nicht sehr sicher, obwohl. Hier meine Struktur ist, vielleicht können Sie sehen das Problem ...

Das obige Skript in products.php ist

http://img695.imageshack.us/i/schermafbeelding2011010kt.png/

0

In your own answer, Sie haben gesagt:

Ok, Problem (teilweise) gelöst. Ich habe die Berechtigungen von Produktbildern ... Aber der Erfolg des Prozesses eine 777 Erlaubnis erforderlich ... nicht sehr sicher obwohl

Der beste Weg, dies zu lösen, ist das Eigentum des Verzeichnisses für den Benutzer zu ändern Der Webserver läuft als. Dies erfordert jedoch Root-Zugriff auf den Server (oder den Befehl sudo), den Sie höchstwahrscheinlich nicht haben. Also hier ist eine Abhilfe:

  1. Ihr Skript neu schreiben zu überprüfen, ob productimages vorhanden ist, und, wenn nicht, schaffen es:

    if(!is_dir('../productimages/')) mkdir('../productimages/', 0755);

  2. Dann löschen Sie die productimages Verzeichnis. Sie lassen das Skript es für Sie neu erstellen. Wenn dies der Fall ist, wird der Benutzer des Webservers das Skript besitzen.

  3. Um dies zu erreichen, chmod 777 * das übergeordnete Verzeichnis. Dies ist nur temporär und ermöglicht dem Skript das Erstellen des Verzeichnisses.

  4. Führen Sie das Skript aus. Stellen Sie sicher, dass das Verzeichnis productimages erstellt wurde. Wenn das der Fall ist, chmod 755 zurück die Eltern direkt.

Dies sollte Ihnen ermöglichen, die Berechtigungen zu erhalten, die Sie benötigen, sowie die Kontrolle über den Zugriff auf das Verzeichnis haben.

+0

Klingt vielversprechend ... Aber aus irgendeinem Grund wird das Skript nicht laufen ... Können Sie bitte ein bisschen mehr Skript schreiben? – Michiel

+0

Sorry, 'mkdir ('../ productsimages /'), 0755)' hätte 'mkdir ('../ productimages /', 0755) sein sollen;' – Josh

Verwandte Themen