php - Hvor kan jeg finde CreateProcess fejlkoder 'detaljer?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg kører i php følgende:


$res = proc\_open($cmd, $descriptorspec, $pipes, "C:\xampphtdocs\",null,array('bypass\_shell'=>true));


Problemet er, at det giver følgende fejl:


Warning: proc\_open(): CreateProcess failed, error code - 3


Hvor kan jeg finde ud af, hvad fejlen betyder?


PS: det er på en Windows Server 2007. SP2. Bruger er admin, fuld adgang. PHP er version 5.3.1

Bedste reference


I Windows producerer CreateProcess ikke en fejlkode. I stedet bruger du GetLastError til at finde flere detaljer, hvis CreateProcess mislykkes, og brug FormatMessage til at slå fejlkoden fra GetLastError til en korrekt beskrivelse. (Fejlkoderne fra GetLastError kan også afkodes bruger denne liste) [4] [5] [6]


Når man kigger på kilden til proc\_open (), gør PHP faktisk GetLastError () for dig i tilfælde af en fejl, og fejlkoden det logger er returneringen fra GetLastError () i stedet for fra CreateProcess (som returnerer en BOOL , usandsynligt at være 3 :))


Bemærk at proc\_open bruger dette til at dumpe meddelelsen:


php\_error\_docref(NULL TSRMLS\_CC, E\_WARNING, "CreateProcess failed, error code - \%u", dw);


... så at '-' du har fået før 3 er bare en bindestreg, ikke et minustegn. Du får derfor fejlkode 3, som ifølge denne liste betyder 'Systemet kan ikke finde den angivne sti. '. [7]