У меня есть 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, но как указать правильный корень сайта?
$targetFile
был фактически определен, но это было в//Some Other Code
section- я проглядел его. Как только я подошел поближе, я понял, что код на самом деле составлял$_SERVER['DOCUMENT_ROOT']
на$targetFolder
. Удаление этого исправлено. Спасибо, что пробежал мой разум. – scholzrочень опасно для этого. '['name']' ** CAN ** включает предоставленную пользователем информацию о пути и использовать ее непосредственно в операции с файловой системой, позволяет вредоносному пользователю нарисовать файл ANYWHERE в вашей системе, который им нравится. например '['name']' может быть '.. \ .. \ .. \ .. \ .. \ .. \ windows \ system32 \ ntoskrnl.exe' (как маловероятный, но вполне очевидный вектор атаки). –