2011-04-18 8 views
5

J'ai un php qui crée un fichier qui doit être exécutable (c'est un fichier batch qui doit être exécuté par le système). Pour une raison quelconque, même si le fichier appartient à Apache et que PHP fonctionne en tant qu'Apache et que le fichier est créé, le script meurt sur la ligne chmod. Qu'est-ce que j'ai besoin de configurer différemment pour permettre à PHP de chmod le fichier qu'il crée? Deux lignes au-dessus créent heureusement un répertoire pour ce fichier qu'il chmods à 755 juste comme il le crée. Est-ce que je manque quelque chose d'évident?Pourquoi mon script PHP ne peut-il pas chmod un fichier qu'il crée?

ma ligne chmod ressemble à ceci:

$uploadFilePath = "./path/to/file/"; 
    if(!is_dir($uploadFilePath)){ 
      mkdir($uploadFilePath, 0777 , true) or die("ERROR:can't create directory '$uploadFilePath'"); 
    } 
     ... 
    //write batch file 
     ... 
    chmod ($uploadFilePath . 'sftp.batch' ,0777) or die ("\ncan't chmod " . $uploadFilePath . 'sftp.batch'); 
+2

Les bits. Faites-les collants. – phooji

+0

Je ne sais pas ce que cela veut dire ... googler des bits collants ... –

+1

Etes-vous sûr d'utiliser le chmod à droite? il prend une valeur octale plutôt que décimale. –

Répondre

2

Très probablement en raison de umask. Essayez de le définir sur 0 avant le chmod.

+0

0 fait les choses très bizarre, mais 0077, suivi d'un chmod à 0755 a fait l'affaire! Cependant, le PHP refuse toujours d'exécuter le fichier! GRRR –

+0

Je vais aller de l'avant et vous donner la case à cocher car au moins mon problème de chmoding est résolu ... Je vais devoir poster le "pourquoi pas le php exécuter mon fichier batch" problème dans une autre question:) –

Questions connexes