Другой владелец файла для файлов, созданных через cron против apache - PullRequest
0 голосов
/ 07 сентября 2010

У меня есть веб-приложение, в котором есть общий файл 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 Ответ

1 голос
/ 07 сентября 2010
root@deathstar:~# su nobody
$ id
uid=65534(nobody) gid=65534(nogroup) Gruppen=65534(nogroup)

вам не нужен идентификатор. Имя пользователя достаточно, и если вы не хотите ничего кодировать жестко, я предлагаю вам:

  • сначала запустите /etc/apache2/apache2.config для "Пользователь"
  • сделать chmod, используя имя пользователя (chmod получит идентификатор пользователя для вас)
...