通过 cron 与 apache 创建的文件的文件所有者不同

发布于 2024-09-18 12:52:47 字数 605 浏览 7 评论 0原文

我有一个网络应用程序,它有一个共享的 config.php 文件。在此文件中,我包含一个收集错误消息的函数(使用 set_error_handler),然后在脚本执行结束时将错误保存到集中日志文件中(使用 register_shutdown_function)代码>)。

日志文件每天都会创建,格式为 Ymd.log。 Cron 脚本作为应用程序的一部分每 5 分钟运行一次,因此通常是每天第一个错误的原因,因此错误文件是在 cron 用户(即帐户超级用户)下创建的。

当我们的员工进来工作并使用该应用程序时,该脚本在 apache 用户 (99) 下运行。错误记录器无法写入错误文件,因为它由超级用户拥有。

一种可能的解决方案是让 cron 脚本 chown 将日志文件设置为 99,以便 apache 用户可以访问它。 uid 99 是否是 apache 托管的公认约定,或者如果我硬编码 99,是否会导致未来的可移植性问题?

有没有其他方法(不诉诸 exec/sudo)来使我的日志可访问?

更新:我没有服务器的 shell 访问权限。

谢谢,亚当

I have a web application which has a shared config.php file. In this file, I include a function which gathers error messages (using set_error_handler) and then, at the end of the script execution, saves the errors to a centralised log file (using register_shutdown_function).

Log files are created daily, in the format Y-m-d.log. Cron scripts run every 5 minutes as part of the application, so are usually the cause of the first errors each day and so the error file is created under the cron user, which is the account superuser.

When our staff come in to work and use the application, the script runs under the apache user (99). The error logger can't write to the error file, as it is owned by superuser.

One possible solution is to have the cron script chown the log file to 99, so that it can be accessed by the apache user. Is uid 99 an accepted convention for apache hosting, or will I be causing future portability issues if I hard-code 99 in?

Are there any other ways (without resorting to exec/sudo) to make my log accessible?

Update: I don't have shell access to the server.

Thanks, Adam

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一刻暧昧 2024-09-25 12:52:47
root@deathstar:~# su nobody
$ id
uid=65534(nobody) gid=65534(nogroup) Gruppen=65534(nogroup)

你不需要id。用户名就足够了,如果您不想硬编码任何内容,我建议您:

  • 首先 grep “User”的 /etc/apache2/apache2.config
  • 使用用户名执行 chmod (chmod 将为您获取用户 ID)
root@deathstar:~# su nobody
$ id
uid=65534(nobody) gid=65534(nogroup) Gruppen=65534(nogroup)

you don't need the id. The username is enough and if you don't want to hardcode nothing, i suggest that you:

  • first grep the /etc/apache2/apache2.config for "User"
  • do a chmod using the username (chmod will get the userid for you)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文