рд╣рдо рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ php-cgi рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ

PHP рд╕рдмрд╕реЗ рдЖрдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдЫреЛрдЯреЗ рд╣реЛрдордкреЗрдЬ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдзреАрд░реЗ-рдзреАрд░реЗ рдмрдбрд╝рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрдм рд▓рд╛рдЦреЛрдВ рд╡реЗрдмрд╕рд╛рдЗрдЯреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдорд╛рдорд▓рд╛ рдХреЗрд╡рд▓ рд╡реЗрдмрд╕рд╛рдЗрдЯреЛрдВ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИ - рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡, CGI рдФрд░ FastCGI рдореЛрдб рд╣реИрдВред
рдореИрдВ CGI рдореЛрдб рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЗрд╕рдХреЗ рдлрд╛рдпрджреЗ рдЗрд╕рдХреА рд╕рд╛рдкреЗрдХреНрд╖ рд╕рд╛рджрдЧреА рд╣реИрдВ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛ рдХреЛ рд▓рд┐рдкрд┐рдпреЛрдВ (рдмрд╛рдЗрдирд░реА рд╕рд╣рд┐рдд) рдореЗрдВ рд╕рдВрдЪрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдЙрдирдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рдорд╛рдЗрдирд╕ рд╣реИ - рдХрд╛рдо рдХреА рдЧрддрд┐, рдЖрд╡реЗрджрди рдХреЗ рд▓рдЧрд╛рддрд╛рд░ рд▓реЙрдиреНрдЪ рдХреЗ рдХрд╛рд░рдгред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдирдпрд╛ FastCGI рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдШрдЯрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреЙрдорди рдЧреЗрдЯрд╡реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (CGI) рдХреНрдпрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд╕рд┐рд░реНрдл рдХреБрдЫ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдпрд╣ рдЕрднреА рднреА рдПрдХ рд╡реЗрдм рддрдХрдиреАрдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЪрд░ HTTP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕реЗ рдирд┐рдХрдЯрддрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрдВрдЧреЗред RFC 3875 рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ CGI / 1.1 рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреА рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

POST рдФрд░ PUT рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП, рдЕрдиреБрд░реЛрдз рдбреЗрдЯрд╛ рдХреЛ рдорд╛рдирдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдирдкреБрдЯ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐, php-cgi рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдпреЗ рд╕рднреА рдЪрд░ рдХреЗрд╡рд▓ рд╡рд╛рдВрдЫрдиреАрдп рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИрдВред рдХреЗрд╡рд▓ рдПрдХ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ RFC рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ - SCRIPT_FILENAMEред рдЗрд╕рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ PHP рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдкрде рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "/home/some-user/htdocs/test.php"ред рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ CGI рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ PHP рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╕ рдЗрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ php-cgi ("php", рдЕрд░реНрдерд╛рддреН "php-cgi"!) рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреЗ рдорд╛рдирдХ рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдпрджрд┐ рдЖрдк рдЕрдкрдирд╛ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдирд╣реАрдВ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЖрдЙрдЯрдкреБрдЯ PHP рд╣реЗрдбрд░ рдЯреНрд░рд┐рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рддреЗ рд╣реБрдП, рддрдм рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдЬрдм рддрдХ рдХрд┐ рдкрд╣рд▓реА рдЦрд╛рд▓реА рд▓рд╛рдЗрди рджрд┐рдЦрд╛рдИ рди рджреЗ (рдмрд╕ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рджреЛ рдкрдВрдХреНрддрд┐ рдЯреВрдЯ рдЬрд╛рддреА рд╣реИ - "\ n \ n") рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдЬреЛ рд╣реИ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рд╕реАрдЬреАрдЖрдИ рдореЛрдб рдореЗрдВ PHP рдХреЗрд╡рд▓ рддрднреА рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИ рдЬрдм рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рдпрд╛ рдЪрд░ рдХреЛ рдкрд╛рд░ рдХрд░рдирд╛ред рдпрджрд┐ рдЖрдкрдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд╛рд░реНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ FastCGI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдкрдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреБрдЫ рднреА рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдЧ рдкрд╛рд░рд┐рдд рдХрд░рдХреЗ PHP рджреБрднрд╛рд╖рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред
рдФрд░ рдирд┐рд░рд╛рдзрд╛рд░ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдХрд╛рдо рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг (рд╡рд┐рдВрдбреЛрдЬ, рд╕реА #):
using System; using System.Diagnostics; namespace PhpApp { class Program { static void Main(string[] args) { Process php = new Process(); //   php-cgi php.StartInfo.FileName = "c:\\php\\php-cgi.exe"; //  ShellExecute   -     php.StartInfo.UseShellExecute = false; // ,      php.StartInfo.RedirectStandardOutput = true; //          php.OutputDataReceived += new DataReceivedEventHandler(php_OutputDataReceived); //     php-cgi   php.StartInfo.EnvironmentVariables.Add("SCRIPT_FILENAME", "test.php"); //   php.Start(); //        php.BeginOutputReadLine(); // ,  php-cgi   php.WaitForExit(); //    php.Close(); //    Console.ReadKey(); } static void php_OutputDataReceived(object sender, DataReceivedEventArgs e) { //     ( ),    if (e.Data == null) return; //     Console.WriteLine(e.Data); } } } 



Source: https://habr.com/ru/post/In121885/


All Articles