2009-04-14 1 views
0

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

Спасибо!

UPDATE КИ, так что кажется, что я использую неправильные абсолютные конвенции пути Я делаю это так:

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

Почему вы не можете использовать абсолютный путь? –

+0

@ Когда я использую абсолютный путь, я получаю сообщение об ошибке. Msgstr "Предупреждение: move_uploaded_file(): URL-доступ к файлу отключен в конфигурации сервера." Это что-то, что я могу настроить в файле .htaccess? –

+0

Вы можете показать вызов move_uploaded_file? Похоже, вы кладете URL-адрес вместо пути к файлу, который не будет работать. –

ответ

1

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

Например:

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

+0

Спасибо, я попробовал то, что вы сказали, и я получил эту ошибку: «Warning: move_uploaded_file(): действующее ограничение open_basedir. Файл (../../ httpdocs/masonic_images/41_red_391-1-l.jpg) не находится в пределах разрешенный путь (ы) " –

+1

На вашем веб-сервере установлен PHP, который блокирует все обращения к файлам за пределами текущего корня сайта. Если вы не можете отключить ограничение open_basedir, невозможно разместить изображения в другом каталоге. –

+0

@Jon есть способ сделать это с .htaccess? Спасибо –

2

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

5

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__), чтобы определить абсолютный путь к файлу.

+0

Итак, как правильно писать абсолютный путь? –

+0

Я обновил пример. Абсолютные пути начинаются с «/». URLS имеют "[protocol]: //". – matpie

+0

Большое спасибо, что я дал вам 1 + за вашу помощь! –

1

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

+0

Спасибо за совет, пользователи не используют это, хотя это для сотрудников, чтобы загружать изображения продукта. –

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