0

我的默认 cpanel 设置以用户“nobody”的身份运行 apache。因此,当我通过输出文件的浏览器运行 php 脚本时,该文件的所有权为 nobody:nobody。当我从以用户“fred”身份登录的 cron 作业运行脚本时,输出文件归 fred:fred 所有,我需要浏览器和 cron 来覆盖同一个文件。我遇到的问题是,如果一个“用户”创建了文件,那么另一个用户无法覆盖它。请您让我知道根本问题在哪里以及可能的解决方案。文件的权限为 0775。

  • 我是否需要设置组 - 将用户添加到与 nobody 相同的组?如果有怎么办?
  • 如何让 cron 作业以用户 nobody 身份运行?

非常感谢,劳埃德

4

2 回答 2

0

将文件的权限更改为0777后尝试编写代码。但这会产生一个安全问题,因为任何人都可以编辑您的文件。

我有一个你需要实现的逻辑:

  1. 创建一个 shell 脚本,将临时文件的内容复制到您的实际文件中。
  2. 在 PHP 中,您只需要更新临时文件,Shell 可以读取它,因为临时文件将对每个人都有读取权限。
  3. 使用ssh2_exec命令使用您的 Linux 用户名和密码执行 shell 脚本。

对于ssh2_exec手册,请点击以下链接:http ://php.net/manual/en/function.ssh2-exec.php

希望这能解决您的问题。

于 2013-03-08T08:14:14.567 回答
0

好的,我对此的解决方案是为用户“nobody”创建一个 crontab。我有一个标准的 cpanel 安装,所以去 /var/spool/cron 为没人创建了一个条目。运行 crontab -e 对其进行编辑和安装。现在php在cron作业中作为nobody运行,就像通过浏览器一样。所有写入的文件都属于nobody,只有nobody 的rw 权限。

于 2013-03-13T11:21:14.530 回答