рдЪреЗрддрд╛рд╡рдиреА! рд╕рднреА рд╡рд┐рдЪрд╛рд░ рд╕реАрдПрд▓рдЖрдИ рдореЛрдб рдореЗрдВ рдкреАрдПрдЪрдкреА рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ, рди рдХрд┐ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ!
рдпрджрд┐ рдЖрдкрдиреЗ PHP рдореЗрдВ рдХрднреА рднреА рд╕рд┐рд╕реНрдЯрдо () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдк рд╢рд╛рдпрдж рд╕реЛрдЪреЗрдВ: рдХреИрд╕реЗ рд╕рд┐рд╕реНрдЯрдо () рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╡реЗрдм рдкреЗрдЬ рдкрд░ рдХрдорд╛рдВрдб рдХреЗ рдкрд░рд┐рдгрд╛рдо рднреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЦреБрдж рдХреЛ рд╕реНрдЯрдбрдЖрдЙрдЯ рд╡реЗрдм рдореЗрдВ рдХрд╣реАрдВ рдирд╣реАрдВред -Server? рдФрд░ C рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо () рд╕рд┐рд╕реНрдЯрдо рдХреА рддрд░рд╣ рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ? рдЬрд╡рд╛рдм, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЬрд┐рддрдирд╛ рдкреНрд░рддреАрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрд╕рд╕реЗ рдЕрдзрд┐рдХ рд╕рд░рд▓ рд╣реИред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, PHP рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо () рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ () (
int php_exec (int type, char * cmd, pval * array, pval * return_value TSRMLS_DC) ), рдпрд╣ рд╕рд┐рд░реНрдл рд░рд┐рдЬрд▓реНрдЯ рд▓рд╛рдЗрди рдХреЛ рд▓рд╛рдЗрди рд╕реЗ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ, рдмрд┐рдирд╛ рдЬрдорд╛ рдХрд┐рдПред рдпрд╣ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рддрд░рд╣ рдПрдХ рд╕рд░рдгреА рдореЗрдВ (), рдФрд░ рдмрдлрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╡реИрд╕реЗ, рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо () рдлрд╝рдВрдХреНрд╢рди рд╕рдВрдХреЗрдд рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди:
рд╕рд┐рд╕реНрдЯрдо () рдХреЙрд▓ рднреА рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд▓рд╛рдЗрди рдХреЗ рдмрд╛рдж рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдмрдлрд░ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдлреНрд▓рд╢ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ рдЕрдЧрд░ PHP рдПрдХ рд╕рд░реНрд╡рд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИред
рдФрд░ php_exec рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрд╕реА рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП popen () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдмреБрд▓рд╛рдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо STDIN рдХреЛ рдЯрд░реНрдорд┐рдирд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдиреНрдпрддрд╛ рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╢реЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрддрд╛ рд╣реИред
рд▓рд╛рдЗрди рдмрдлрд░рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди ()
рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рд╣реЛ рдЬрд╛рдП, рддреЛ рдпрд╣ рд▓рд╛рдЗрди рдХреЗ рдмрд┐рдирд╛ рдЬрдорд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд┐рдирд╛, рдЖрдк рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмрдЬрд╛рдп рдмрд╕ рдкрд╢реНрддреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдСрдкрд░реЗрд╢рди рдХреА рдкреНрд░рдЧрддрд┐ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП git рдХреНрд▓реЛрди рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, ls рдЕрднреА рднреА рдПрдХ рдХреЙрд▓рдо рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, passthru рднреА php_exec рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП, рд╕рднреА рдХреЗ рд╕рд╛рде рдкрд░рд┐рдгрд╛рдореА рдкрд░рд┐рдгрд╛рдо
Proc_open () рдХреЗ рд╕рд╛рде рд╕рдорд╛рдзрд╛рди
рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдХрд╣рддреЗ рд╣реИрдВ, рдЯрд░реНрдорд┐рдирд▓ рд╕реЗ рднрд╛рдЧрддреЗ рд╕рдордп рд╡рд╣реА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ls, рдФрд░ рдпрджрд┐ рдЖрдкрдХреЛ рд░рдВрдЧ рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рднреА рдЖрдк proc_open рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
$handle = proc_open("ls", array(0=>STDIN,1=>STDOUT,2=>STDERR), $pipes); $retval = proc_close($handle);
рдпреВрдирд┐рдХреНрд╕ рддрд░реАрдХрд╛ рд╣реИ
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЙрдкрд░реЛрдХреНрдд рд╡рд┐рдзрд┐рдпрд╛рдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд░ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЛ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдХреГрддрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╛ рдЖрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрд░рд╛рдиреЗ UNIX- рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдХрд╛рдВрдЯрд╛-рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ (рдпрд╣ рдХреЗрд╡рд▓ * рдирд┐рдХреНрд╕ рдХреЗ рддрд╣рдд рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдФрд░ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ pcntl рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐):
function libcSystem($cmd) { $pid = pcntl_fork(); if($pid < 0) { return -1; } if($pid == 0) { pcntl_exec('/bin/sh', array('-c', $cmd), $_ENV); exit(127); } pcntl_waitpid($pid, $status); return pcntl_wexitstatus($status); }
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬреЛ рд╕реАрдПрд▓рдЖрдИ рдХреЗ рд▓рд┐рдП рдкреАрдПрдЪрдкреА рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдХреИрд╕реЗ рдмрдирд╛рдирд╛ рд╣реИ () рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред