2010-07-01 7 views
2

J'ai une situation intéressante où j'ai un script perl watcher (en utilisant Linux :: Inotify2) regarder les fichiers à supprimer dans un répertoire donné, puis les remettre off à un script PHP pour le traitement. Le répertoire surveillé et les fichiers qu'il contient ne sont pas la propriété de l'utilisateur sous lequel le script watcher s'exécute, mais l'arborescence dans laquelle les fichiers sont déposés est rwxr-xr-x et le fichier est lisible par tout le monde.Le script PHP ne peut pas ouvrir un fichier lorsqu'il est appelé à partir d'un script perl

Voici mon delemma. Le script PHP ne peut pas ouvrir un descripteur de fichier sur le fichier qui lui est passé lorsqu'il est appelé depuis le script perl en utilisant system(), exec() ou ``. Toutefois, le script PHP peut ouvrir un descripteur de fichier sur le même fichier lorsque le script est exécuté manuellement à partir de la ligne de commande en utilisant le même utilisateur effectif.

Quelqu'un at-il des idées pour lesquelles ce serait le cas?

+0

Passez-vous la poignée ou le nom de fichier? Pas clair à la question. – Joseph

+0

Quels messages d'erreur obtenez-vous? –

+0

Je n'ai pas d'erreur, la sous-shell PHP retourne sans erreur. Comme mentionné dans mon commentaire à la réponse ci-dessous, le script PHP peut voir que le fichier existe, mais ne parvient pas à ouvrir un handle de fichier. Encore une fois, l'exécution du script PHP à partir de la ligne de commande en tant que telle: /usr/bin/php script.php nom de fichier fonctionne très bien, et le script peut ouvrir un handle sur le fichier 'filename'. Cependant faire la même chose dans le script perl que: système ("/ usr/bin/php script.php nomfichier") provoque le script PHP ne pas être en mesure d'ouvrir un handle sur le fichier 'filename'. – Preston

Répondre

0

Vos appels fopen() reposent probablement sur des chemins relatifs qui se rompent lorsque le répertoire de travail change.

+0

Je passe le nom du fichier, et le chemin absolu est pré-pendu dans le fichier PHP. Le fichier PHP peut déterminer avec précision que le fichier transmis * existe * mais ne peut pas ouvrir un gestionnaire de fichiers. – Preston

Questions connexes