Если вы хотите ограничить PHP собственным домашним каталогом каждого пользователя, вам нужна установка PHP, в которой:
- PHP работает с учетными данными пользователя
- PHP принимает индивидуальную конфигурацию
Типичным случаем является установка CGI (или FastCGI), а не запуск PHP в качестве модуля Apache. Затем вы можете предоставить собственный файл php.ini для каждого пользователя.
Кстати, я не проверял, но, возможно, open_basedir = "~"
работает как положено ...
====== РЕДАКТИРОВАТЬ ======
Некоторые пояснения, вытекающие из комментария ФП:
В оболочках Unix «~» является синонимом «домашнего каталога текущего пользователя», поэтому это «/ var / home / john», если вы john, и «/ var / home / michael», если вы Майкл. «var / home / ~ /» не имеет особого значения: это просто каталог с именем ~.
Многие программы используют это соглашение оболочки. Я не знаю, делает ли это PHP.
CGI позволяет выполнять произвольные программы на сервере, поэтому он менее защищен, чем статический HTML, так же, как скейтборд менее безопасен, чем космический челнок. Но мы не говорим о выполнении произвольных программ: мы говорим о выполнении интерпретатора PHP. Это будет так же безопасно, как PHP и ваша среда.
Если вы заинтересованы в данной теме, Google для FastCGI (реализация CGI с повышенной производительностью). Многие хостинг-провайдеры используют его.