我有一个 cron 任务,它运行 PHP 脚本并创建文件(图像)。但是 cron 任务正在运行我(存在我我可以使用以下命令创建我的个人用户名:(我自己的用户名)而不是 apache、nobody、httpd、www……并且创建的所有文件都属于这个用户。
如果我通过浏览器运行相同的脚本,它将以 apache 的形式运行。我已经对其进行了测试whoami
并检查了文件权限。
问题是,如果我开发一个 Web 界面来删除文件(这是用户/管理员管理图像的方式),它将作为 apache 运行,并且无法删除文件,因为 apache 不是所有者,也不属于同一组我。
处理这个问题的正确方法是什么?
- 添加我到 apache 组还是相反?
- 使用权限 0777 保存文件?这看起来很“丑”
- 尝试以 apache 身份运行 cron 作业?怎么做?
答案1
有不同的解决方案:
- 将您的用户添加到 apache 组
www-data
,nobody
或系统上的任何名称。您还需要授予该组写入权限。 - 在 apache 用户下运行 cron 任务。可以使用类似以下命令完成此操作:
sudo su apache_user -c "crontab -e"
。但是,这可能不起作用,具体取决于是否允许切换到 apache 用户并为 添加 cron 任务apache_user
。
我觉得第1点应该更好。
答案2
最好以 apache 用户身份运行 cron 作业:
sudo crontab -u apache_user -e
与运行作业相比,这是一个更清晰的解决方案你,因为属于 Apache 的东西应该保持原样。混合用户会带来混乱,并可能在某些时候产生问题。