Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php fopen ftp_更改所有者/组-有时-为什么?_Php_Permissions_Ftp_Fopen - Fatal编程技术网

php fopen ftp_更改所有者/组-有时-为什么?

php fopen ftp_更改所有者/组-有时-为什么?,php,permissions,ftp,fopen,Php,Permissions,Ftp,Fopen,在我的php主机上,我有一个由cron作业运行的脚本,该作业打开/覆盖远程ftp服务器上的文件。它在大多数情况下都能工作,但我发现,当它最初创建文件时,所有者/组是“736/736”,但在某些时候,所有者和组会更改为“99/99”。问题是我开始遇到权限问题-以下是代码: $local = fopen("/mypath/myfile.txt","w"); $result = ftp_fget($conn_id, $local,"remotepath/remotefile.txt", FTP_BIN

在我的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);
我使用相同的代码来提取一堆文件。 并非所有文件都会发生这种情况。除了“读取”类型的fopen(“r”)之外,此原始文件再也不会被触摸

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


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

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

解决方案:

  • 您可以要求您的网络主机提供商修复这些问题
  • 将要读/写的所有文件转换为777。如果文件是777,它通常不会尝试更改权限。但是,如果创建了新文件,它们将在99之前再次成为所有者

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