PHP: сохранение файлов с PHP в другой корневой каталог? - PullRequest
0 голосов
/ 14 апреля 2009

ОК, когда я сохраняю загруженные файлы с помощью PHP через move_uploaded_file (), я не могу использовать абсолютный URL, мне нужно использовать относительный URL. Мой сайт имеет 2 корневых каталога, один для стороны http и один для стороны https: httpdocs и httpsdocs соответственно. Так что, если мой скрипт находится на стороне https, как я могу сохранить файл в папку на стороне http?

Спасибо!

UPDATE Итак, похоже, что я использую неправильное соглашение об абсолютном пути, я делаю это так:

$dir = 'https://www.mydomain.com/masonic_images/';
move_uploaded_file($_FILES['blue_image']['tmp_name'], $dir.$new_name);

Ответы [ 4 ]

5 голосов
/ 14 апреля 2009

move_uploaded_file() не принимает URL-адреса для обоих параметров. Пункт назначения - это абсолютный путь в вашей файловой системе.

<?php
$dir = '/var/www/httpsdocs/'; // Adjust to your configuration
move_uploaded_file($_FILES['blue_image']['tmp_name'], $dir.$new_name);

Как предложено @ apphacker . Вы можете использовать realpath(__FILE__) для определения абсолютного пути к файлу.

2 голосов
/ 14 апреля 2009

Если вы не можете использовать абсолютный путь, потому что не знаете, что такое абсолютный путь, используйте функцию realpath () PHP, чтобы выяснить, что это такое, а затем используйте его.

1 голос
/ 15 апреля 2009

Обратите внимание, что поскольку вы помещаете загруженные файлы в httpdocs, можно загрузить файл php и выполнить произвольный код.

1 голос
/ 14 апреля 2009

Находятся ли каталоги httpdocs и httpsdocs в одной родительской папке? Если это так, просто используйте относительный путь для второго параметра в файле move_uploaded_file, чтобы поместить файл в другой корневой каталог.

Например:

$uploaddir = '../httpdocs/';
$uploadfile = $uploaddir . basename($_FILES['myfile']['name']);

В этом коде предполагается, что скрипт загрузки находится в корневом каталоге httpsdocs и вы хотите сохранить файл в каталоге httpdocs.

...