2013-07-22 2 views
0

У меня есть PHP-сайт, работающий на моем тестовом сервере. На сервере запущен IIS 7 с включенным PHP. Я использую виртуальные сайты IIS для настройки своих тестовых сайтов, указывающих вне wwwroot на фактический путь к проекту. В этом случае iis находится по адресу C:\inetpub\wwwroot\, но сайт FFA находится по адресу D:\WebRoot\FFA с URL-адресом www.myserverurl.com/FFA. Все отлично работает с этой настройкой, за исключением того, что я пытаюсь создать сценарий загрузки файлов с помощью PHP, которому необходимо получить доступ к папке на сервере в виртуальном сайте FFA.php path с виртуальным каталогом iis вне wwwroot

Я использую следующий скрипт:

$targetFolder = 'D:\WebRoot\FFA\Admin\img\Logo_Files'; 
$tempFile = $_FILES['Filedata']['tmp_name']; 
// Some other Code 
move_uploaded_file($tempFile,$targetFile); 

Когда я делаю это, я получаю следующее сообщение об ошибке:

Warning: move_uploaded_file(): Unable to move 'C:\Windows\Temp\phpBB33.tmp' to 'C:\inetpub\wwwrootD:\WebRoot\FFA\Admin\img\Logo_Files/icon.png' in D:\WebRoot\FFA\Admin\js\uploadify\uploadify.php on line 23 

я получаю то, что происходит в этом PHP использует C:\inetpub\wwwroot как сайт root, но как указать правильный корень сайта?

ответ

0

Смотрите комментарии ниже Марк B об опасности использования пользователем при условии ['name']

Ваш код не отображается $targetFile определяется только $targetFolder

Кроме того, я бы рекомендовал использовать слэши ..

Переведите переменную $targetFile и она должна работать

$targetFile = 'D:/WebRoot/FFA/Admin/img/Logo_Files/'.$_FILES['Filedata']['name']; 
$tempFile = $_FILES['Filedata']['tmp_name']; 
// Some other Code 
move_uploaded_file($tempFile,$targetFile); 

See the PHP Manual for move_uploaded_file

+0

$targetFile был фактически определен, но это было в //Some Other Code section- я проглядел его. Как только я подошел поближе, я понял, что код на самом деле составлял $_SERVER['DOCUMENT_ROOT'] на $targetFolder. Удаление этого исправлено. Спасибо, что пробежал мой разум. – scholzr

+0

очень опасно для этого. '['name']' ** CAN ** включает предоставленную пользователем информацию о пути и использовать ее непосредственно в операции с файловой системой, позволяет вредоносному пользователю нарисовать файл ANYWHERE в вашей системе, который им нравится. например '['name']' может быть '.. \ .. \ .. \ .. \ .. \ .. \ windows \ system32 \ ntoskrnl.exe' (как маловероятный, но вполне очевидный вектор атаки). –

Смежные вопросы