2010-09-04 5 views
2

Sur mon hôte php, j'ai un script qui est exécuté par un travail cron qui ouvre/remplace un fichier d'un serveur FTP distant. Cela fonctionne la plupart du temps, mais je constate que lorsqu'il crée initialement le fichier, le propriétaire/groupe est "736/736", mais à un moment donné, le propriétaire et le groupe passent à "99/99". Le problème est que je commence à courir pour des problèmes d'autorisations - voici le code:php fopen ftp_get changement de propriétaire/groupe - parfois - pourquoi?

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

J'utilise ce même code pour tirer vers le bas un tas de fichiers. Cela n'arrive pas à tous les fichiers. Ce fichier original n'est jamais touché à nouveau, sauf pour un type 'read' fopen ("r").

Je ne pense pas que ce soit le ftp_fget, car j'ai un script différent, aussi lancé par cron qui crée des fichiers texte via un fopen "w", et certains de ces fichiers sont également propriétaires "99/99".

Des pensées? Cela pourrait-il être un problème de configuration du côté de l'ISP? Si oui, que leur dis-je? Quand je leur dis que mon propriétaire/groupe a tort, ils réinitialisent totalement mon répertoire ftp - autorisations, propriétaire, etc. ce qui est pénible.

+0

Quels sont les utilisateurs de 736 et 99 (regardez dans/etc/passwd)? Que voulez-vous dire par "à un certain moment" - entre le fopen() et le ftp_fget()? Quel utilisateur utilise le script Cron? Si vous exécutez le même script via Apache, cela peut expliquer les 2 utilisateurs - un pour Cron et un pour Apache. – Robin

+1

ce que je veux dire, c'est que cela ne semble pas se produire tout de suite, ou par exemple, j'ai une douzaine de fichiers qui sont actuellement très bien (736). Je pense que s'il y avait un problème il devrait créer tous les fichiers comme "99/99" (personne/apache). Je ne suis pas sûr de l'utilisateur cron - c'est un fournisseur d'hébergement, donc je n'ai pas accès à tout. –

Répondre

1

Le groupe UID 99 et le propriétaire UID 99 est Nobody ou apache. C'est la même chose pour tous les dossiers créés par le système de fichiers. Ainsi, lorsque le travail cron s'exécute, les fichiers sont la propriété de apache.

Solutions:

  1. Vous pouvez demander à votre fournisseur d'hébergement Web pour corriger ces choses.
  2. Convertir tous les fichiers qu'il va lire/écrire en 777. Si les fichiers sont 777, il n'essaie généralement pas de modifier les autorisations. Cependant, si de nouveaux fichiers sont créés, ils seront à nouveau propriétaires de 99.
Questions connexes