Я столкнулся с проблемой, которая заставляет меня чесать голову уже пару дней. Я использую jQuery Uploadify для загрузки файлов на веб-сервер. Я использую слегка исправленный скрипт uploadify.php, который обрабатывает загрузку файла:
if (!empty($_FILES)) {
$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath = $_SERVER['DOCUMENT_ROOT'] . "/file-repository/" . $_REQUEST['folder'] . '/';
$targetFilename = str_replace(" ","-",$_FILES['Filedata']['name']);
$targetFilename = preg_replace('/[^a-zA-Z0-9-_.]/', '', $targetFilename);
$targetFile = str_replace('//','/',$targetPath) . $targetFilename;
move_uploaded_file($tempFile,$targetFile);
echo str_replace($_SERVER['DOCUMENT_ROOT'],'',$targetFile);
}
?>
Этот скрипт работал нормально до вчерашнего дня. Теперь выдает следующую ошибку:
Внимание :
move_uploaded_file (/home/server/public_html/devhealth-safety/administration/group/image.jpg)
[Function.move загруженного-файл]:
не удалось открыть поток: нет такого файла или каталога в
/ дома / tdserver / public_html / SB3 / Библиотека / JS / Uploadify / uploadify.php
on line 46
Предупреждение : move_uploaded_file ()
[Function.move загруженного-файл]:
Невозможно переместить \ '/ tmp / phpYH8nfH \' в
\ '/ Дом / сервер / public_html / devhealth-безопасности / управление / группа / image.jpg \'
в
/ дом / сервер / public_html / DEV / Библиотека / JS / Uploadify / uploadify.php
на линии 46
По какой-то причине часть . "/file-repository/" .
в uploadify.php отбрасывается, что означает, что скрипт пытается переместить файл на фиктивный путь на сервере.
Теперь, как я уже сказал, сценарий сработал, и я не изменил его. Я возился со структурами папок, но путь к файлу правильный, папка file-repository
имеет все разрешения на чтение / запись / выполнение и принадлежит владельцу PHP и группам владельцев (в данном случае это nobody:nobody
). Так что я бы не подумал, что моя работа с папками связана с этой проблемой (но кто знает?)
Как ни странно, если я заменю . "/file-repository/" .
на . "/filerepository/" .
, скрипт выдаст ошибку, которую я ожидал:
Внимание :
move_uploaded_file (/home/server/public_html/dev/filerepository/health-safety/administration/group/image.jpg)
[Function.move загруженного-файл]:
не удалось открыть поток: нет такого файла или каталога в
/ дома / tdserver / public_html / SB3 / Библиотека / JS / Uploadify / uploadify.php
на линии 46
Итак, вопрос в том ... почему PHP отбрасывает часть строки, которая содержит дефис? Есть идеи?