【问题标题】:php fopen ftp_get changing owner/group - sometimes - why?php fopen ftp_get 更改所有者/组 - 有时 - 为什么?
【发布时间】:2011-04-08 06:30:54
【问题描述】:

在我的 php 主机上,我有一个由 cron 作业运行的脚本,该作业从远程 ftp 服务器打开/覆盖文件。它大部分时间都有效,但我发现当它最初创建文件时,所有者/组是“736/736”,但在某些时候所有者和组更改为“99/99”。问题是我开始遇到权限问题 - 这是代码:

$local = fopen("/mypath/myfile.txt","w");
$result = ftp_fget($conn_id, $local,"remotepath/remotefile.txt", FTP_BINARY);
fclose($local);

我正在使用相同的代码来提取一堆文件。 它不会发生在所有文件上。这个原始文件再也不会被触及,除了一个'read'类型的fopen(“r”)。

我不认为是 ftp_fget,因为我有一个不同的脚本,它也由 cron 运行,它通过 fopen "w" 创建文本文件,其中一些文件也是所有者 "99/99"。

有什么想法吗?这可能是isp方面的配置问题吗?如果是这样,我该怎么告诉他们?当我告诉他们我的所有者/组错误时,他们完全重置了我的整个 ftp 目录 - 权限、所有者等,这很痛苦。

【问题讨论】:

  • 哪些用户是 736 和 99(查看 /etc/passwd)? “在某个时候”是什么意思 - 在 fopen() 和 ftp_fget() 之间? Cron 脚本以什么用户身份运行?如果您通过 Apache 运行相同的脚本,这可以解释 2 个用户 - 一个用于 Cron,一个用于 Apache。
  • 我的意思是它似乎不会立即发生,或者例如,我有十几个文件目前很好 (736)。我认为如果有问题,它应该将所有文件创建为“99/99”(nobody/apache)。我不确定 cron 用户 - 这是一个托管服务提供商,所以我无法访问所有内容。

标签: php permissions ftp fopen


【解决方案1】:

组 UID 99 和所有者 UID 99 是 Nobodyapache。这对于文件系统创建的所有文件夹都是一样的。因此,当 cron 作业运行时,文件归 apache 所有。

解决方案:

  1. 您可以要求您的虚拟主机提供商解决这些问题。
  2. 将所有要读取/写入的文件转换为 777。如果文件是 777,它通常不会尝试更改权限。但是,如果创建了新文件,它们将再次成为 99 的所有者。

【讨论】:

    猜你喜欢
    • 2023-01-18
    • 1970-01-01
    • 2021-01-11
    • 2013-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    相关资源
    最近更新 更多