Загрузка файлов на сервер через PHP и директива open_basedir

В этом посте речь пойдет о конфигурировании PHP для корректной загрузки изображений на сервер и их последующего использования на сайте. Дело в том, что многие CMS пренебрегают рекомендациями от разработчиков языка программирования PHP и пользуются инструментами загрузки файлов на сервер не совсем так как было бы желательно.

Всё дело в том, что они загружают по умолчанию изображения на сервер в временную папку, которая находится «за» каталогом самого сайта. После загрузки изображений скрипты CMS системы пытаются обратиться к этому файлу при помощи элемента tmp_name переменной $_FILES и естественно терпят неудачу если включена директива open_basedir в конфигурации PHP. Что бы этого не происходило надо обращаться к этим файлам при помощи стандартных функций функции is_uploaded_file и move_uploaded_file, которые, собственно и предназначены для работы с загруженными в системный временный каталог файлами.

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

Эта директива принимает строковое значение (литерал) в котором указан путь к разрешённой директории. Если нужно отключить, то достаточно просто закомментировать эту строку.

На этом всё, спасибо за внимание.