Cronjob 未作为 apache 运行

rlc*_*ral 6 cron file-permissions apache-2.2

我有一个运行 PHP 脚本并创建文件(图像)的 cron 作业。但是cron作业运行为(是自己的用户名),而不是Apache,没人,httpd的,WWW ...和所有创建的文件属于该用户。

如果我通过浏览器运行相同的脚本,它会作为 apache 运行。我已经对其进行了测试whoami并检查了文件权限。

问题是,如果我开发一个 web 界面来删除文件(这是用户/管理员能够管理图像的方式),它将作为 apache 运行,并且无法删除文件,因为 apache 是不是所有者也不属于的同一组。

处理这个问题的正确方法是什么?

  • 添加到 apache 组还是相反?
  • 使用权限 0777 保存文件?这看起来很“丑”
  • 尝试以 apache 的身份运行 cron 作业?如何?

jan*_*kes 11

最好以 apache 用户身份运行 cron 作业:

sudo crontab -u apache_user -e
Run Code Online (Sandbox Code Playgroud)

与像一样运行作业相比,这是一个更简洁的解决方案,因为属于 apache 的应该保持这样。混合用户会带来混乱,并可能在某些时候产生问题。


Kha*_*led 2

有不同的解决方案:

  1. 将您的用户添加到 apache group www-datanobody或您系统上的任何名称。您还需要授予该组写入权限。
  2. 在 apache 用户下运行 cron 作业。这可以使用如下命令来完成sudo su apache_user -c "crontab -e":但是,这可能不起作用,具体取决于是否允许切换到 apache 用户并为apache_user.

我认为第1点应该更好。

  • 我认为恰恰相反:混合用户是一个坏主意。另外,您不需要在那里使用“su”。 (2认同)