【问题标题】:PHP Creating folder with the owner as 99PHP创建所有者为99的文件夹
【发布时间】:2011-07-12 09:26:36
【问题描述】:

我有一个脚本(作为 cron 运行),它在服务器上创建一个名为 images 的新文件夹,并将图像从根文件夹移动到这个新文件夹。稍后,另一个函数将从这些图像中创建缩略图,并将它们放入同一文件夹中名为 thumbs 的另一个新文件夹中。

但是,此功能仅在父级 images 文件夹出于某种奇怪原因将所有者设置为 99 时才有效。该文件夹将用户作为其默认所有者。

如何获取脚本以创建所有者设置为 99 的文件夹?或者 PHP 脚本无法对拥有用户为所有者的文件进行 chmod 操作的原因是什么?

【问题讨论】:

  • cron 是否运行 php 脚本?

标签: php directory chmod chown file-ownership


【解决方案1】:

cron 作业以nobody (UID 99) 运行,因此用户必须具有适当的权限。如果您不想更改权限,则需要让 cron 作业以其他用户身份运行。

【讨论】:

    【解决方案2】:

    显然,这取决于 php 脚本在 cronjob 中的运行方式,以确定哪个所有者将被设置为新创建文件的默认值。

    我第一次使用:

    /usr/local/bin/php /home/username/public_html/script.php > /home/username/public_html/file.xml 2>&1
    

    但这会创建新文件夹,并将所有者设置为“用户名”。

    改为使用 curl:

    /usr/bin/curl -s http://domain.com/script.php > /home/username/public_html/file.xml 2>&1
    

    允许在所有者设置为 nobody (UID 99) 的情况下创建新文件/文件夹,这反过来又允许下一个脚本在此文件夹中创建新文件夹/文件而不会出现问题。

    【讨论】:

    • 从命令行运行 PHP 与通过 Apache 将 PHP 作为模块运行时 100% 不同。这就是您的 curl 方法有效的原因。当您通过curl 运行它时,PHP 脚本将通过 Apache 模块运行,然后为 Web 服务器用户设置权限,这正是您想要的。
    猜你喜欢
    • 2013-11-13
    • 2012-07-04
    • 1970-01-01
    • 2014-01-04
    • 2016-04-10
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 2020-12-20
    相关资源
    最近更新 更多