Cron作业和文件夹权限 - 权限被拒绝

Jon*_*noB 4 php permissions cron

我在webroot上面有一个文件夹,用于临时存储由php Web应用程序生成的用户文件.例如,文件可以是将附加到电子邮件的PDF.

文件夹权限设置为rwxr-xr-x(0755).从Web应用程序执行过程时,文件将被写入此文件夹而不会出现任何问题.

我现在还设置了一个调用php脚本的cron作业来执行与上面完全相同的过程.但是,由于权限失败,PDF无法保存到上述文件夹中 - cron作业报告permission denied错误.

我已尝试将文件夹权限设置为0775并仍然获得权限被拒绝.但是,当权限为0777时,然后cron作业正常工作.

这对我来说似乎很奇怪 - 为什么cron在0755获得了拒绝许可,但它通过网络应用程序运行良好?

Zla*_*tko 7

可能的答案是cron作业在您的用户下执行 - 该目录由apache(或www-data或nobody或您的Web服务器运行的任何用户)拥有.

要使其工作,您可以将cron作业设置为以Web服务器用户身份运行.像这样的东西:

su -l www-data -c 'crontab -e'
Run Code Online (Sandbox Code Playgroud)

或者,您可以将权限更改为775(所有者和组的读写执行,以及其他人的读 - 执行),并将文件夹的组所有权设置为运行cron作业的用户.

但是,你必须确保如果你正在删除某些内容或者下载到由apache创建的文件夹中,你仍然会遇到问题(apache会创建一个它自己拥有的文件,然后你的用户就无法删除它了,无论如何目录权限.

您还可以查看suphp或其他最新内容 - Web服务器进程在您的用户名下运行,具体取决于您的系统架构.