Другой владелец файла для файлов, созданных через cron против apache
У меня есть веб-приложение, которое имеет общий файл config.php. В этот файл я включаю функцию, которая собирает сообщения об ошибках (используя set_error_handler
) и затем, в конце выполнения скрипта, сохраняет ошибки в централизованный файл журнала (используя register_shutdown_function
).
Лог-файлы создаются ежедневно, в формате Y-m-d.log
, Сценарии Cron запускаются каждые 5 минут как часть приложения, поэтому они обычно являются причиной первых ошибок каждый день, поэтому файл ошибок создается под пользователем cron, который является суперпользователем учетной записи.
Когда наши сотрудники приходят на работу и используют приложение, скрипт запускается под пользователем apache (99). Регистратор ошибок не может записать в файл ошибок, так как он принадлежит суперпользователю.
Одно из возможных решений - использовать скрипт cron. chown
файл журнала на 99, так что к нему может получить доступ пользователь apache. Является ли uid 99 принятым соглашением для хостинга Apache, или я буду вызывать будущие проблемы с переносимостью, если я жестко введу код 99?
Есть ли другие способы (не прибегая к exec
/sudo
) сделать мой журнал доступным?
Обновление: у меня нет доступа к серверу.
Спасибо адам
1 ответ
root@deathstar:~# su nobody
$ id
uid=65534(nobody) gid=65534(nogroup) Gruppen=65534(nogroup)
вам не нужен идентификатор. Имя пользователя достаточно, и если вы не хотите ничего кодировать жестко, я предлагаю вам:
- сначала grep /etc/apache2/apache2.config для "Пользователь"
- выполните chmod, используя имя пользователя (chmod получит идентификатор пользователя для вас)