繁体   English   中英

对cron和浏览器的权限被拒绝的mkdir

[英]Permission denied mkdir for cron and browser

我们有一个PHP XML解析脚本,可将照片上传到文件夹结构中,如/content/images/2012/05/31/%object_id%/ 该解析器主要作为DirectAdmin cronjob运行。 在通过浏览器运行解析器时,在正确获取文件夹权限以启用cronjob在该目录中的上载时遇到很多问题。

根据print_r(posix_getpwuid(fileowner($directory))); 目录的所有者与get_current_user()相同。 但是,我收到: Warning: mkdir() [function.mkdir]: Permission denied通过浏览器运行脚本时, Warning: mkdir() [function.mkdir]: Permission denied 作为cron作业运行时,它工作正常。

所有文件夹都具有chmod 0777,并以此创建新文件夹。

mkdir($path,0777,true);

自然,我们在上传和/或删除文件本身上也存在相同的权限问题。

有什么方法可以使所有文件操作既作为cron作业又通过浏览器运行?

我们正在Linux上运行PHP版本5.2.17。

需要注意几个想法:get_current_user获取.php文件(即脚本)的所有者,而不是运行php脚本的用户的名称。 这些总是一样的,因为文件(由您(普通用户)上载)和php / apache将以其他用户(通常称为“ apache”或“ www”)运行。您需要这两个中的后一个。 从php手册中获取的建议代码段是:

$processUser = posix_getpwuid(posix_geteuid());
print $processUser['name'];

(http://php.net/manual/zh/function.get-current-user.php-查看评论)


不过,要解决您当前的问题,我强烈建议您以与运行php / apache的用户相同的身份运行cron(请检查crontab上的手册页)-该用户应为上述代码段中的那个,请查看文件和目录到同一用户(当前将是root用户)以及您和FTP客户端之间共享的组。 然后确保用户和组具有读写权限,以便您也可以从ftp编辑。 确保在脚本创建目录时同时更改了目录(775)和文件(644)的权限。

还要注意,如果您使用mkdir(),则上面的目录还必须具有该用户的写权限(这实际上可能是您的最初问题,以及为什么只有root / cron可以在其中写)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM