Руководство PHP гласит:
open_basedir (строка)
Ограничьте файлы, к которым может обращаться PHP, указанным деревом каталогов, включая сам файл. Эта директива НЕ зависит от того, включен ли безопасный режим или нет.
Когда скрипт пытается получить доступ к файловой системе, например, с помощью include или fopen (), проверяется местоположение файла. Когда файл находится за пределами указанного дерева каталогов, PHP откажется к нему.
Кроме того, немного дальше …
open_basedir может влиять не только на функции файловой системы; например, если MySQL сконфигурирован для использования драйверов mysqlnd, open_basedir затронет LOAD DATA INFILE. Таким образом, большая часть расширенной функциональности PHP использует open_basedir.
Однако, похоже, что это ограничение не распространяется на манипуляции с сокетами. На моем сервере, хотя я установил open_basedir
в /home:/tmp
, Я все еще могу получить доступ к файлу сокета под /run
сквозь socket_connect
функция (обратите внимание, что я не двигался /var/run
(/run
) в какое-то искривленное место под /home
или же /tmp
).
Есть ли способ продлить open_basedir
ограничения на включение файлов сокетов * путей, так что невозможно открыть файл сокета вне /home
а также /tmp
?
* Я понимаю, что файлы сокетов на самом деле не «открыты», а скорее «связаны» через socket_connect
функция и bind
системный вызов. Тем не менее, так как open_basedir
кажется, применяется к функциям, не относящимся к файловой системе … Я предполагаю, что может быть способ.
Задача ещё не решена.
Других решений пока нет …