У меня есть общий хостинг-сервер с CentOS linux и cPanel, на котором запущен Apache с mod_php
. Мы используем пользовательские квоты Linux для обеспечения того, чтобы каждый веб-сайт оставался в пределах приобретенного ими дискового пространства. Однако на многих веб-сайтах есть общедоступные системы загрузки файлов или их администраторы (например, программное обеспечение CMS). Поскольку это программное обеспечение работает под управлением mod_php, загружаемые файлы в конечном итоге принадлежат пользователю, под которым работает Apache, и не учитываются в дисковой квоте пользователя.
Единственный способ решить эту проблему - написать сценарий, который просматривает все каталоги в / home и chown
s все файлы в public_html, чтобы они принадлежали правильному пользователю, а затем запускать этот скрипт ежечасно через cron. Прежде чем я напишу такой сценарий, есть ли лучшие решения? (Или такой сценарий существует?)
РЕДАКТИРОВАТЬ: Я должен иметь возможность запускать mod_php. CGI php не подходит.
Попробуйте использовать mod_suphp (или mod_suexec, где это необходимо). Запустит apache под соответствующим пользователем, поэтому их права собственности на файлы будут правильными.
По сути, если вы не можете запустить PHP в режиме CGI, вы облажались. Вы не можете использовать файлы, потому что тогда веб-сервер не сможет изменить их позже (что важно для некоторых приложений), если только вы не хотите сильно волноваться с вашими разрешениями и масками и каждый раз сталкиваться с SNAFU разрешений. что-то не было предварительно настроено с правильной маской.
Однако ваши возражения против запуска PHP в режиме CGI безосновательны; Я работаю в компании, у которой есть несколько серверов виртуального хостинга, и мы запускаем PHP через suexec, и у нас нет клиентов, которые жалуются на отсутствие функций. Да, это немного медленнее, но накладные расходы на запуск теряются из-за неэффективности большинства веб-приложений PHP.