windows - apache service php exec fungerer ikke

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg kiggede op alle andre spørgsmål vedrørende dette, men de hjalp ikke, så:


Jeg kører xampp (lite) på en Windows Server 2003-maskine inde i et domæne, Apache er installeret som en tjeneste. Problemet er: PHP-funktionerne exec, system, passthru osv. Gør intet, ingen fejlmeddelelser (logniveau apache er fejlsøgning, php error\_reporting er E\_ALL), ingen programkørsel, intet, det virker som om funktionsopkaldet ikke var der


Jeg forsøgte forskellige tilgange: exec, system, ..; proc\_open og WScript.Shell COM objektet, fungerede ingenting. Jeg forsøgte at bruge den absolutte sti, gav tilladelser til brugeren, prøvede tonsvis af forskellige .exe s gør forskellige ting, intet fungerede, intet blev alle henrettet.


Jeg gav tjenesten Apache mit brugernavn ; gav den sin egen apache-bruger ; gav det systembrugeren og krydsede ' Tillad interaktion med desktop '.


php safe\_mode er slukket , også funktionerne er ikke deaktiveret.


Når du kører apache IKKE som service, virker alt perfekt.


Enhver ide om, hvad der kunne være forkert?


TIA

Bedste reference


Hvis du forsøger at starte GUI-apps fra en tjeneste i Vista, vil du have mange problemer. Som en sikkerhedsfunktion medierer Vista interaktionen mellem tjenester med skrivebordet ved hjælp af 'Interactive Services Detection'.


Det betyder, at hvis du kører PHP som et modul i en Apache-tjeneste, vil du ikke kunne starte GUI-apps ved hjælp af en hvilken som helst metode. Denne slags ting har bare vundet 't arbejde:


$ WshShell=ny COM ('WScriptShell');
$ oExec=$ WshShell-> Kør ('notepad.exe', 7, falsk);


Så hvis du vil bruge Apache/PHP som en proxy for at starte GUI apps, skal du køre Apache som en konsol applikation.


For det første, hvis Apache allerede er installeret som en tjeneste, skal du indstille den s starttype til 'manuel' ved hjælp af snap-in service. (\% SystemRoot\% \ system32 \ services.msc) Søg efter Tjenester i startmenuen søgefeltet.


Tilføj derefter en genvej til C: \ apache \ bin \ httpd.exe (eller hvor Apache er installeret) til din Startup-mappe, og angiv den genvej, der skal minimeres. Du kan bruge en app som TrayIt! at tvinge Apache ned i systembakken.


Brug derefter en af ​​de metoder, der er beskrevet på PHP-webstedet, og du vil kunne åbne en Windows-applikation fra PHP og se den s GUI.

Andre referencer 1


Tjek din PHP.ini-fil bare inkasser de funktioner, du har nævnt, i den uautoriserede indstilling. Ikke noget standard fra en XAMPP-udgivelse, men det er værd at kontrollere.


Du siger at du ikke får nogen fejl, jeg vil antage, at din server er sat som en tjeneste, derfor vil alle kommandoer sendt med exe, system, passthru osv. Blive gjort i baggrunden, så du ikke vil se dem køre, men du bør være i stand til at fange data selv.


<?php

//Start an object to capture data.
ob\_start();

//Check we have access to the command line.
exec("ping google.com -n 1");

//Capture the output.
$output = ob\_get\_clean();

//Let's display it.
echo $output;

?>


Prøv ovenstående og se hvad der sker, du skal få svar fra kommandolinjen, ellers kan det skyldes tilladelser.