我有一个运行PHP脚本并创build文件(图像)的cron作业。 但是,cron作业正在运行(作为我自己的用户名),而不是apache,nobody,httpd,www …以及所有创build的文件都属于这个用户。
如果我通过浏览器运行相同的脚本,它运行为apache。 我已经用whoamitesting过了,并检查了文件权限。
问题是,如果我开发一个Web界面来删除文件(这是用户/pipe理员将如何pipe理图像),它将作为Apache运行,它将无法删除的文件,因为Apache是不是所有者,也不属于与我一样的群体。
什么是正确的方法来处理这个问题?
有不同的解决scheme:
www-data , nobody ,或者你的系统上调用的任何东西。 您还需要授予组写入权限。 sudo su apache_user -c "crontab -e" 。 但是,这可能无法正常工作,具体取决于是否允许切换到apache用户并为apache_user添加cron作业。 我认为第一点应该会更好。
最好像apache用户那样运行cron作业:
sudo crontab -u apache_user -e
与你一样运行这个工作相比,这是一个更清洁的解决scheme,因为属于apache的东西应该保持这种状态。 用户的混合会带来混乱,并可能在某个时候产生问题。