Cronjob 没有以 apache 形式运行

Cronjob 没有以 apache 形式运行

我有一个 cron 任务,它运行 PHP 脚本并创建文件(图像)。但是 cron 任务正在运行(存在我可以使用以下命令创建我的个人用户名:(我自己的用户名)而不是 apache、nobody、httpd、www……并且创建的所有文件都属于这个用户。

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

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

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

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

答案1

有不同的解决方案:

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

我觉得第1点应该更好。

答案2

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

sudo crontab -u apache_user -e

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

相关内容