2009-09-01 3 views
1

Il est exécuté lors de la navigation sur un fichier PHP (http://localhost/filename.php) sur Windows.Comment réparer l'échec du code PHP dans Windows: exec ("rm -rf F:/tmpJob/*")

Le serveur web est Apache.

Je pense qu'il devrait être divisé en 2 étapes:

1.found utilisateur d'Apache fils

2.Give autorisations suffisantes pour que l'utilisateur vers "F:/tmpJob /"

I vérifié httpd.conf et trouvé:

User daemon 
Group daemon 

Mais il n'y a pas d'utilisateur "démon" sur Windows. Comment trouver le réel utilisateur de threads apache?

Répondre

1

Er ... rm -rf n'est pas une commande valide dans Windows. La commande de suppression dans Windows/DOS est del.

L'équivalent de rm -rf FILEPATH dans Windows est del /S /Q PATH pour supprimer recurSively et être calme à ce sujet (c'est-à-dire ne donne pas l'invite "êtes-vous sûr?").

+0

J'ai installé UnixUtils sous Windows. Je peux exécuter cette commande avec succès dans une invite. – omg

+0

Ensuite, je suggère de démarrer le Gestionnaire des tâches (Démarrer-> Exécuter, entrez 'taskmgr' et cliquez sur OK), puis assurez-vous que vous visualisez les processus de tous les utilisateurs, trouvez le processus Apache dans la liste et voyez quel utilisateur il est répertorié comme en cours d'exécution en tant que. Si vous l'utilisez en tant que service, c'est probablement SYSTEM. – Amber

+0

Vous voulez dire par deviner? – omg

0

Vous pouvez obtenir le propriétaire du processus actuel, par ex. avec getmypid() et the wmi class WIN32_PROCESS

<?php 
$pid = getmypid(); 
$wmi = new COM ('winmgmts:{impersonationLevel=impersonate}//./root/cimv2'); 
$result = $wmi->execquery("Select * from Win32_Process Where ProcessID = '$pid'"); 

foreach($result as $row) { 
    $owner = new VARIANT(''); 
    $domain = new VARIANT(''); 
    $row->GetOwner($owner, $domain); 
    echo ' exe: ', $row->ExecutablePath, ' owner:', $owner, ' domain:', $domain, "\n"; 
} 

Vous devriez vérifier probablement aussi la sortie de

<pre><?php passthru('set'); ?></pre> 

esp. la variable PATH. Peut-être que les UnixUtils ne sont pas dans le PATH du compte SYSTEM.

+0

Je me suis assuré à la fois Administrateur et Système a accès à UnixUtils dans PATH. – omg

+0

La sortie de votre code est: exe: F: \ wamp \ bin \ apache \ apache2.2.11 \ bin \ httpd.exe propriétaire: SYSTEM domaine: NT AUTHORITY. – omg

+0

Et le système a le contrôle complet de ces répertoires. – omg