У меня установлен Apache 2.4 на Windows и PHP, работающий на одном сервере «Windows Server 2008 R2» без использования IIS.
У меня есть PHP-скрипт, который должен загружать файлы на сервер.
Вот мой код PHP
if (!empty($_FILES) && $actualToken == $verifyToken) {
$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath = ROOT_FIXED . UPLOAD_DIR . $targetFolder; //$_SERVER['DOCUMENT_ROOT']
$targetPath = str_replace( "//", "/", $targetPath);
$new_filename = USER_ID . '_' . time() . '_' . str_replace(" ", "_", $_FILES['Filedata']['name']);
$targetFile = $targetPath . $new_filename;
$fileParts = pathinfo($new_filename);
if (in_array(strtolower($fileParts['extension']),$fileTypes)) {
move_uploaded_file($tempFile,$targetFile);
$msg_res = trim($new_filename);
} else {
$msg_res = 'INVALID';
}
}
Когда я загружаю файл, я вижу файл .tmp, созданный в указанном месте временной папки. Но после загрузки файла он удаляется из временной папки, но по какой-то причине он не перемещается в постоянную папку.
Я не уверен, является ли это разрешением проблемы или нет, но я прилагаю скриншоты разрешений на папки.
Я также изменил файл php.ini и добавил
upload_tmp_dir = 'C:\php\temp_files'
поэтому временные файлы должны идти в указанное место «и они есть».
Этот снимок экрана показывает, что Apache входит в систему как «Локальная системная учетная запись»
На этом снимке экрана показаны параметры безопасности в папке, куда файл должен быть постоянно перемещен
Задача ещё не решена.
Других решений пока нет …