Uploadify и PHP FTP - $ _REQUEST ['folder'] не передается - PullRequest
1 голос
/ 10 сентября 2010

Я пытаюсь использовать uploadify и FTP-соединение для загрузки файла.Я понял, что каталоги не создаются, потому что переменная 'folder' из js не проходит.Мне интересно, если это предмет области.В любом случае, вот js:

$("#uploadify").uploadify({
'uploader'       : '/lib/jquery.uploadify-v2.1.0/uploadify.swf',
'script'         : '/lib/jquery.uploadify-v2.1.0/uploadify.php',
'cancelImg'      : '/lib/jquery.uploadify-v2.1.0/example/cancel.png',
'folder'         : '<?=time()?>',
'queueID'        : 'fileQueue',
'multi'          : true

});

PHP:

$dir = $_REQUEST['folder'];
if (!ftp_mkdir($conn_id, $dir)) {
 echo "There was a problem while creating $dir\n";
} else {
echo "successfully created $dir\n";
}

Я получаю ошибку-- "ftp_mkdir (): Невозможно создатькаталог. "

Я проверил, отображается ли time (), и это так.Если я жестко закодирую простую строку там, это терпит неудачу.Но если я изменю значение $ dir на «что угодно» (а не на запрос), каталог будет создан, но он не примет параметр запроса.Я также попытался получить и опубликовать.

Также этот же сценарий работает, если я не использую FTP, просто загрузите на сервер, с которого обслуживается страница - без проблем.

1 Ответ

0 голосов
/ 17 марта 2011

Две вещи, которые вы можете сделать для диагностики:

  1. Убедитесь, что PHP обращается по пути, который, по вашему мнению, он получает.
  2. Убедитесь, что на этом пути существует send-files и что он доступен для записи во всем мире.

Из вашего сообщения об ошибке похоже, что вы, возможно, запускаете свой сервер на Linux или Mac (думаю, Mac). Вы знаете, что каталог send-files точно существует? Возможно, вы захотите проверить и убедиться, что send-files находится в текущем рабочем каталоге, который использует PHP:

<?php
print getcwd();
?>

Создайте файл с кодом выше, посетите его в браузере, и если результат не совпадает с каталогом / путем, который на самом деле содержит send-files, вы можете сделать одну из двух вещей в скрипте PHP для uploadify: 1016 *

  1. Измените текущий рабочий каталог PHP на ваш путь для send-файлов: chdir('/Users/user/Sites/directory/with/send-files/'). Вы должны просто иметь возможность поместить это вверху PHP-скрипта uploadify, и это должно работать. Но если это не так, напишите, и я могу помочь вам понять, почему. ;]
  2. Создайте send-files по любому пути в результате вызова getcwd() в сценарии PHP выше.

В любом случае вам необходимо убедиться, что каталог send-files существует и что PHP имеет разрешения на запись в этот каталог. Любой из этих вариантов выше поможет с первой частью, убедившись, что путь существует.

Итак, мы перейдем ко второй части. Нам нужно убедиться, что каталог доступен для записи скриптом PHP. Мы chmod файлы, чтобы они были доступны для записи во всем мире. Есть как минимум два способа сделать это:

  1. Если вы знаете, как использовать командную строку / приложение терминала Mac, запустите его и cd в каталог, где находится send-files: cd /Users/user/Sites/path/to/send-files (но в этом примере вы захотите cd в / to, а не / send-files;]) Затем выполните это: chmod -R 777 send-files
  2. Если вы не знаете, как использовать командную строку, УЗНАЙТЕ. Это невероятно полезно. Но сейчас, если вы на Mac, используйте Finder, чтобы найти каталог, в котором находится send-files. Щелкните правой кнопкой мыши на send-files и нажмите «Получить информацию». В нижней части информационной панели разверните раздел «Общий доступ и разрешения». Нажмите на замок в правом нижнем углу информационной панели и введите свой пароль, чтобы разблокировать параметры разрешений, чтобы вы могли их редактировать. Измените каждый элемент в столбце привилегий на параметр «Чтение и запись». Это сделает этот каталог и все его содержимое доступными для чтения / записи.

Затем попробуйте загрузить свои файлы еще раз и посмотреть, окажется ли файл там. Это сработало?

...