2012-10-04 3 views
0

J'ai un fichier PHP qui, lorsqu'il est exécuté, doit redémarrer Apache. J'ai essayé comme suit: je mets dans la dernière ligne:Redémarrer Apache2 sous Windows XP avec PHP

exec('C:\apache2restart.bat'); 

Et le fichier. Bat

net stop apache2 && net start apache2 

Mais c'est juste l'arrêt d'Apache, il ne redémarre pas. Qu'est-ce que je fais mal?

+0

Je suppose que le processus PHP est détruit pendant cette commande batch, car le serveur web vient de s'arrêter. Cela semble une très, très mauvaise idée cependant ... – slugonamission

+0

@slugonamission Le processus PHP lance juste un autre processus, qui ne devrait pas être tué avec lui. Je pense ... Et cela dépend de la façon dont le fichier php est appelé. PHP peut être appelé depuis la ligne de commande, auquel cas Apache n'a rien à voir avec ça. – GolezTrol

+0

Le .bat est en quelque sorte lié à PHP qui se termine par APACHE, il n'y a pas de paramètre dans exec() ou une autre fonction qui crée le processus créé indépendamment? –

Répondre

0

Modifiez le fichier pour

net stop apache2 
net start apache2 
+0

ne fonctionne pas, seulement l'arrêter –

+0

Est-ce que 'net start apache2' fonctionne seul? – deizel

+0

Si le PHP est appelé via Apache, il se peut que le script soit tué, mais il peut redémarrer Apache. Cela devrait fonctionner si vous l'appelez depuis la ligne de commande: 'PHP.exe yourscript.php' – GolezTrol

0

Essayez d'exécuter un fichier batch séparé qui exécute le script de redémarrage.

1

si un fichier ne contenant que les travaux de commande de démarrage, alors je vous suggère de taper ce

sleep 10 

dans les deux commandes (ou plus de 10! Il suffit de vérifier combien de temps d'arrêt prend puis l'ajuster) dans afin de faire attendre le lot 10 secondes. Faites-moi savoir, je suis curieux.