我在webroot上面有一个文件夹,用于临时存储由php Web应用程序生成的用户文件.例如,文件可以是将附加到电子邮件的PDF.
文件夹权限设置为rwxr-xr-x(0755).从Web应用程序执行过程时,文件将被写入此文件夹而不会出现任何问题.
我现在还设置了一个调用php脚本的cron作业来执行与上面完全相同的过程.但是,由于权限失败,PDF无法保存到上述文件夹中 – cron作业报告拒绝权限错误.
我已尝试将文件夹权限设置为0775并仍然获得权限被拒绝.但是,当权限为0777时,然后cron作业正常工作.
这对我来说似乎很奇怪 – 为什么cron在0755获得了拒绝许可,但它通过网络应用程序运行良好?
解决方法:
可能的答案是cron作业在您的用户下执行 – 该目录由apache(或www-data或nobody或您的Web服务器运行的任何用户)拥有.
要使其工作,您可以将cron作业设置为以Web服务器用户身份运行.
像这样的东西:
su -l www-data -c 'crontab -e'
或者,您可以将权限更改为775(所有者和组的读写执行,以及其他人的读 – 执行),并将文件夹的组所有权设置为运行cron作业的用户.
但是,你必须确保如果你正在删除某些内容或者下载到由apache创建的文件夹中,你仍然可能遇到问题(apache会创建一个它自己拥有的文件,然后你的用户就无法删除它了,无论如何目录权限.
您还可以查看suphp或其他最新内容 – Web服务器进程在您的用户名下运行,具体取决于您的系统架构.
标签:php,permissions,cron
来源: https://codeday.me/bug/20190726/1538871.html