2009-07-24 5 views
1

Ich versuche, mit meiner CakePHP-App Uploadify (ein jQuery-Plugin) zu verwenden. Lokal (WampServer), es funktioniert großartig, aber wenn ich es auf meinem Live-Server (Dreamhost) versuche, werden die Dateien nicht angezeigt. Ich habe die Ordner korrekt chmodiert, die Pfade überprüft usw., und ich kann keinen Sinn dafür finden, warum es nicht funktioniert. Hier ist upload.php:Uploadify - Dateien werden nicht angezeigt

if (!empty($_FILES)) { 
    $tempFile = $_FILES['Filedata']['tmp_name']; 
    $targetPath = $_SERVER['DOCUMENT_ROOT'] . "/app/webroot/posts/temp/"; 
    $targetFile = str_replace('//','/',$targetPath) . $_FILES['Filedata']['name']; 

    $targetFile = str_replace(".", "_" . mt_rand(10000000,99999999) . ".", $targetFile); 

    move_uploaded_file($tempFile,$targetFile); 
} 
echo "1"; 

Dieses Skript auf jeden Fall ausgeführt wird, aber ich habe in den angegebenen Ordner (und alle über das Dateisystem) sah, und die hochgeladene Datei (en) sind nur nicht angezeigt! Es macht mich verrückt - hoffentlich hat jemand die Antwort darauf. Bitte lassen Sie mich wissen, wenn ich mehr Code posten sollte, und ich werde es tun.

Antwort

2

Es stellte sich heraus, es war diese Linie:

$targetFile = str_replace(".", "_" . mt_rand(10000000,99999999) . ".", $targetFile); 

Diese Linie gemeint war eine zufällige Folge von Zahlen an den Dateinamen anhängen Kollisionen zu vermeiden. Wie Sie jedoch sehen können, funktioniert es auf dem gesamten Pfad, nicht nur auf dem Dateinamen. Nun, mein Domainname befindet sich in meinem Pfad (d. H. Mydomain.com) und erhielt daher Änderungen an mydomain_12314123402.com, was offensichtlich ein Pfad ist, der nicht existiert.

Mann, ich fühle mich wie ein Idiot!

+1

Ja, Sie sollten pathinfo verwenden, um den entsprechenden Pfadteil zu erhalten. –

+0

Das oder einfach meine Zufallszahl an den Dateinamen anhängen, bevor ich den vollständigen Pfad erstelle, was ich getan habe. –

2

Sie könnten $ targetPath so ändern, dass es relativ zum Dokument und nicht zum genauen Serverpfad ist. Ich hatte vor einiger Zeit ein ähnliches Problem.