Avatar billede dennism Nybegynder
16. november 2005 - 20:39 Der er 20 kommentarer og
1 løsning

Restart Apache

Er det muligt at lave sådan at man fra din browser kan genstarte Apache-serveren (evt. PHP-programmering)?
Avatar billede yezbarh Nybegynder
16. november 2005 - 20:39 #1
Har vi ikke haft det oppe før?!
Avatar billede dennism Nybegynder
16. november 2005 - 20:43 #2
Jo, det har vi - men har ikke fundet en løsning. Forsøger igen, for at se om der skulle være nogen der kender til det!
Avatar billede showsource Seniormester
17. november 2005 - 10:02 #3
Med PHP:
<?php
$apache_restart = "C:\\apache\\Apache.exe -k restart";
$safe = ini_get('safe_mode');

if(!empty($safe)) {
echo "safe_mode er on, apache kan ikke restartes fra scriptet!";
}else{

    if(isset($_GET["restart"])) {
    exec($apache_restart);
    }

echo"<a href=\"". $_SERVER["PHP_SELF"] ."?restart=true\">Genstart</a>";

}

?>

Hvis det er en UNIX maskine, vil det sikkert ikke virke.
Avatar billede showsource Seniormester
17. november 2005 - 10:03 #4
Det her:
C:\\apache\\Apache.exe
skal selvf. ændres så stien stemmer overens med din apache
Avatar billede dennism Nybegynder
17. november 2005 - 16:34 #5
Jeg får følgende fejl i min fejl-log:

'C:\Program' is not recognized as an internal or external command,
operable program or batch file.

Har denne sti:
$apache_restart = "C:\\Program Files\\Apache Group\\Apache2\\bin\\Apache.exe -k restart";

Det er naturligvis fordi den ikke kan lide mellemrummet mellem program og files. Hvad gør jeg ved det?
Avatar billede dennism Nybegynder
18. november 2005 - 15:41 #6
Har du en forklaring?
Avatar billede showsource Seniormester
18. november 2005 - 15:54 #7
næhh, er ikke lige klar over hvad der skal til, for at "elimenere" mellemrum
Avatar billede dennism Nybegynder
19. november 2005 - 12:51 #8
Fandt en løsning, men før følgende fejl i min error.log, når jeg kører scrippet:

Usage: C:\\Program Files\\Apache Group\\Apache2\\bin\\Apache.exe [-D name] [-d directory] [-f file]
                                                            [-C "directive"] [-c "directive"]
                                                            [-w] [-k start|restart|stop|shutdown]
                                                            [-k install|config|uninstall] [-n service_name]
                                                            [-v] [-V] [-h] [-l] [-L] [-t] [-S]
Options:
  -D name          : define a name for use in <IfDefine name> directives
  -d directory      : specify an alternate initial ServerRoot
  -f file          : specify an alternate ServerConfigFile
  -C "directive"    : process directive before reading config files
  -c "directive"    : process directive after reading config files
  -n name          : set service name and use its ServerConfigFile
  -k start          : tell Apache to start
  -k restart        : tell running Apache to do a graceful restart
  -k stop|shutdown  : tell running Apache to shutdown
  -k install        : install an Apache service
  -k config        : change startup Options of an Apache service
  -k uninstall      : uninstall an Apache service
  -w                : hold open the console window on error
  -e level          : show startup errors of level (see LogLevel)
  -E file          : log startup errors to file
  -v                : show version number
  -V                : show compile settings
  -h                : list available command line options (this page)
  -l                : list compiled in modules
  -L                : list available configuration directives
  -t -D DUMP_VHOSTS : show parsed settings (currently only vhost settings)
  -S                : a synonym for -t -D DUMP_VHOSTS
  -t                : run syntax check for config files
Apache.exe: illegal option -- k
Avatar billede showsource Seniormester
19. november 2005 - 12:55 #9
Hvilken løsning?
Og illegal option er fordi du har to - foran k
--k
skal være
-k
Avatar billede dennism Nybegynder
19. november 2005 - 12:58 #10
Jeg satte \" foran og bagefter stien til filnavnet.
Avatar billede dennism Nybegynder
19. november 2005 - 12:59 #11
Og nej, jeg har ikke --k.
Jeg har denne:

$apache_restart = "\"C:\\Program Files\\Apache Group\\Apache2\\bin\\Apache.exe\" -k restart";
Avatar billede showsource Seniormester
19. november 2005 - 13:17 #12
ha, that simple! :O)

Har selv en bat fil med flg. indhold:
C:\Apache\Apache.exe -n "Apache" -k restart

gemt som "apache_restart.bat" til brug for genstart af apache via startmenuen i windows.
Men den bør nok ikke bruges via et link i en browser, da den jo evt. kan ændres af en hacker.

Men har prøvet flg. ex. som virker fint for mig:
Avatar billede showsource Seniormester
19. november 2005 - 13:18 #13
Hov, glemte ex. :O)

<?php
$apache_restart = "C:\\Apache\\Apache.exe -n \"Apache\" -k restart";

$bat_fil = "\"C:/Documents and Settings/showsource/Menuen Start/Server/apache_restart.bat\"";

$safe = ini_get('safe_mode');

if(!empty($safe)) {
echo "safe_mode er on, apache kan ikke restartes fra scriptet!";
}else{

    if(isset($_GET["restart"])) {
        if(exec($apache_restart)) {
        echo"Apache er genstartet som defineret med \$apache_restart";
        }else{
        echo"NIX!";
        }
    echo"<p>";
    }

    if(isset($_GET["bat"])) {
        if(exec($bat_fil)) {
        echo"Apache er genstartet via batfil<p>";
        }else{
        echo"NIX!";
        }
    echo"<p>";
    }

echo"<a href=\"". $_SERVER["PHP_SELF"] ."?restart=true\">Genstart</a> (var)";
echo"<p>";
echo"<a href=\"". $_SERVER["PHP_SELF"] ."?bat=true\">Genstart</a> (bat)";

}

?>
Avatar billede dennism Nybegynder
19. november 2005 - 13:33 #14
Hmm..kan ik få skidtet til at virke, hverken med bat eller som kommando. Men du har nok også ret i, at det er for usikkert. Smider du lige et svar?
Avatar billede showsource Seniormester
19. november 2005 - 13:37 #15
ehmm, er det XP du bruger?
Eller, er apache installeret som service?

Hvis ikke, skal -n \"Apache\" fjernes
Avatar billede showsource Seniormester
19. november 2005 - 13:38 #16
Og et svar også.
Avatar billede dennism Nybegynder
19. november 2005 - 13:39 #17
Jeg kører Windows Server 2003 ;)
Avatar billede showsource Seniormester
19. november 2005 - 13:40 #18
Og er apache installeret med service navnet "Apache" ???
Avatar billede showsource Seniormester
19. november 2005 - 13:40 #19
Prøv evt. at restarte apache via en commmand prompt
Avatar billede dennism Nybegynder
19. november 2005 - 13:41 #20
Nej, det er nok Apache2 den er installeret som.
Avatar billede dennism Nybegynder
19. november 2005 - 13:41 #21
Men skidt med det - det er nok for usikkert ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Uanset kodesprog, så giver vi dig mulighederne for at udvikle det, du behøver.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester