2009-07-24 3 views
1

Я пытаюсь использовать Uploadify (плагин jQuery) с моим приложением CakePHP. Локально (WampServer), он отлично работает, но когда я пытаюсь использовать его на своем реальном сервере (Dreamhost), файлы не отображаются. Я правильно chmod'ed папки, проверил пути и т. Д., И я не могу понять, почему он не работает. Вот upload.php:Uploadify - файлы не отображаются

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"; 

Этот сценарий, безусловно, является запуск, но я посмотрел в указанную папку (и по всей файловой системе), и загруженный файл (ы) просто не отображаются! Это сводит меня с ума - надеюсь, у кого-то есть ответ на это. Пожалуйста, дайте мне знать, если я буду писать больше кода, и я это сделаю.

ответ

2

Оказывается, именно эта линия:

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

Эта линия должна была добавить случайную последовательность чисел к имени файла, чтобы избежать столкновений. Однако, как вы можете видеть, он работает по всему пути, а не только по имени файла. Ну, мое доменное имя находится на моем пути (т. Е. Mydomain.com) и, таким образом, получает изменения в mydomain_12314123402.com, который, очевидно, является путём, который не существует.

Человек, я чувствую себя идиотом!

+1

Ya, вы должны использовать pathinfo, чтобы получить соответствующую часть пути для работы. –

+0

Это, или просто переместите мое случайное число в файл, прежде чем я построю полный путь, и это то, что я сделал. –

2

Вы можете изменить $ targetPath так, чтобы он был относительно документа, а не точного пути к серверу. Некоторое время назад у меня была аналогичная проблема.