Cronjob不作为Apache运行

我有一个运行PHP脚本并创build文件(图像)的cron作业。 但是,cron作业正在运行(作为我自己的用户名),而不是apache,nobody,httpd,www …以及所有创build的文件都属于这个用户。

如果我通过浏览器运行相同的脚本,它运行为apache。 我已经用whoamitesting过了,并检查了文件权限

问题是,如果我开发一个Web界面来删除文件(这是用户/pipe理员将如何pipe理图像),它将作为Apache运行,它将无法删除的文件,因为Apache是不是所有者,也不属于与一样的群体。

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

  • 到Apache组或其他方式?
  • 保存权限为0777的文件? 这看起来“丑陋”
  • 尝试运行cron作为Apache? 怎么样?

有不同的解决scheme:

  1. 把你的用户添加到Apache组www-datanobody ,或者你的系统上调用的任何东西。 您还需要授予组写入权限。
  2. 在apache用户下运行cron作业。 这可以使用如下命令来完成: sudo su apache_user -c "crontab -e" 。 但是,这可能无法正常工作,具体取决于是否允许切换到apache用户并为apache_user添加cron作业。

我认为第一点应该会更好。

最好像apache用户那样运行cron作业:

 sudo crontab -u apache_user -e 

一样运行这个工作相比,这是一个更清洁的解决scheme,因为属于apache的东西应该保持这种状态。 用户的混合会带来混乱,并可能在某个时候产生问题。