ďťż

Ładny brzuch

Witam.
Mam problem z obsługą PHP w sewerze.
if AnsiUpperCase(ExtractFileExt(LocalDoc)) = ('.PHP') then WinExec(PChar(StaraSciezka(ExtractFilePath(Application.ExeName)+'php\php. exe')+' -q '+StaraSciezka(LocalDoc)), SW_NORMAL);
wiadomo, że trzeba to odpalić. Ale co potem?
Skąd mam wziąć kod HTML, któy mam wyslac do przeglądarki?



Możesz wypróbować taką oto funkcję:
//uruchomienie programu zewnętrznego function RunAndWait(ACommand: String; AParams: String; var AOutput: String): DWORD; var SI : TStartupInfo; PI : TProcessInformation; SA : TSecurityAttributes; hReadPipe : THandle; hWritePipe : THandle; Bufor : array[0..1024] of Char; BytesRead : Cardinal; PrevFolder : String; begin ZeroMemory(@SI, SizeOf(TStartupInfo)); ZeroMemory(@SA, SizeOf(TSecurityAttributes)); //Ustawiamy atrybuty procesu SA.nLength := sizeof(TSecurityAttributes); SA.lpSecurityDescriptor := nil; SA.bInheritHandle := True; //ustawiamy parametry startowe SI.cb := SizeOf(TStartupInfo); SI.dwFlags := STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW; CreatePipe(hReadPipe, hWritePipe, @SA, 0); SI.hStdOutput := hWritePipe; // do utworzonej rurki SI.hStdInput := 0; SI.hStdError := hWritePipe; // do utworzonej rurki SI.wShowWindow := SW_HIDE; PrevFolder := GetCurrentDir; // zapsanie domyslnego katalogu SetCurrentDir(ExtractFilePath(AParams)); CreateProcess(nil, PChar(Format('%s %s',[ACommand, AParams])), nil, nil, True, CREATE_NEW_CONSOLE, nil, nil, SI, PI); // utworzenie procesu WaitForSingleObject(PI.hProcess, oiScriptDelay); // trzeba poczekac az aplikacja // podana jako ACommand sie zakonczy SetCurrentDir(PrevFolder); // odtworzenie ustawien sciezki GetExitCodeProcess(PI.hProcess, Result); //pobranie kodu wyjscia procesu CloseHandle(PI.hProcess); // zamykamy uchwyt procesu CloseHandle(hWritePipe); // koniecznie trzeba zamknac rurke od strony // zapisu bo przy probie odczytu z rurki funkcja ReadFile gdy nie ma juz // zadnych danych spowoduje ze funkcja bedzie czekac az naplyna nowe // dane do rurki odczytanie danych z rurki i przepisanie ich do zmiennej // AOutPut while ReadFile(hReadPipe, Bufor, SizeOf(Bufor), BytesRead, nil) do begin Bufor[BytesRead] := #0; AOutPut := AOutPut + Copy(Bufor, 0, BytesRead); FillChar(Bufor, SizeOf(Bufor), 0); end; CloseHandle(hReadPipe); end;
Wywołuje ona program konsolowy i wstawia do zmiennej AOutput to, co ten program zwrócił. Czyli w przypadku php.exe będzie to naturalnie wygenerowany kod HTML :)

dzięki. przydało się ;]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •