 |
|
|  |
|
 |
8³â Àü |
(PHP 4 >= 4.3.0, PHP 5, PHP 7)
proc_open — ¸í·ÉÀ» ½ÇÇàÇÏ°í, ÀÔÃâ·Â¿ëÀ¸·Î ÆÄÀÏ Æ÷ÀÎÅ͸¦ ¿
¼³¸í
resource proc_open ( string $cmd , array $descriptorspec , array &$pipes [, string $cwd [, array $env [, array $other_options ]]] )
proc_open() À̶ópopen() °í Àß ´à¾ÒÁö¸¸ ÇÁ·Î±×·¥ÀÇ ½ÇÇàÀ» ´õ °¡´Ã°Ô Á¦¾îÇÒ ¼ö ÀÖ´Â Á¡¿¡¼ ´Ù¸¨´Ï´Ù.
ÆĶó¹ÌÅÍ
cmd
½ÇÇàµÇ´Â ¸í·É.
descriptorspec
¼öÄ¡ ÷ÀÚ ¹è¿·Î, µð½ºÅ© ¸®ÇÁ ´ÙÀ½ ¹øÈ£¸¦ Å°´Ù¸ç PHP°¡ ±× µð½ºÅ© ¸®ÇÁ Á¤º¸¸¦ ¾î¶»°Ô ÀÚ½Ä ÇÁ·Î¼¼½º¿¡ Àü´ÞÇÏ´ÂÁö¸¦ ³ªÅ¸³»´Â °ÍÀÌ ´ëÀÀÇÏ´Â °ªÀÔ´Ï´Ù. 0ÀÌ Ç¥ÁØ ÀÔ·Â(stdin), 1ÀÌ Ç¥ÁØ Ãâ·Â(stdout)À̸ç, 2ÀÌ Ç¥ÁØ ¿À·ù Ãâ·Â(stderr)ÀÔ´Ï´Ù.
°¢ ¿ä¼Ò´Â ´ÙÀ½°ú °°½À´Ï´Ù.
ÇÁ·Î¼¼½º¿¡ Àü´Þ ä³ÎÀ» ³ªÅ¸³»´Â ¹è¿. ù¹ø° ¿ä¼Ò´Â µð½ºÅ© ¸®ÇÁ ŸÀÇ ÇüÅ·Î, 2¹ø° ¿ä¼Ò°¡ ±× Ʋ¿¡ ¸Â´Â ¿É¼ÇÀÔ´Ï´Ù. »ç¿ëÇÒ ¼ö ÀÖ´Â ÇüÀºpipe (2¹ø° ¿ä¼Ò´Â ÇÁ·Î¼¼½º¿¡ ÆÄÀÌÇÁÀÇ Àбâ ÃøÀ» °Ç³Ù´Ù¸ér ±Û ÂÊÀ» °Ç³Ù´Ù¸éw) ¹×file (2¹ø° ¿ä¼Ò´Â ÆÄÀϸí) ÀÔ´Ï´Ù.
½ÇÁ¦ ÆÄÀÏ µð½ºÅ© ¸®ÇÁ ´Ù(¿ÀÇÂÇÑ ÆÄÀÏÀ̳ª ¼ÒÄÏ, STDIN µî)À» ³ªÅ¸³»´Â ½ºÆ®¸² ÀÚ¿ø.
ÆÄÀÏ µð½ºÅ© ¸®ÇÁ ŸÀÇ ¹øÈ£´Â ƯÈ÷ 0, 1, 2¿¡ ±¹ÇÑµÈ °Í¿¡¼´Â ¾ø½À´Ï´Ù. À¯È¿ÇÏ´Ù ¾î¶°ÇÑ ÆÄÀÏ µð½ºÅ© ¸®ÇÁ ŸÀÇ ¹øÈ£µµ ÁöÁ¤ÇÒ ¼ö ÀÖ°í, ±×°ÍÀº ÀÚ½Ä ÇÁ·Î¼¼½º¿¡ Àü´ÞµË´Ï´Ù. À̷νá ÇÑ ½ºÅ©¸³Æ®¿Í, ÀÚ½Ä ÇÁ·Î¼¼½º·Î¼ ½ÇÇàÇÏ°í ÀÖ´Â ¶Ç ´Ù¸¥ ½ºÅ©¸³Æ®¿Í »çÀÌ¿¡¼ Åë½ÅÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ÀÌ´Â PGP³ª GPG, opensslµîÀÇ ÇÁ·Î±×·¥¿¡ Æнº ÇÁ·¹ÀÌÁ º¸´Ù ¾ÈÀüÇÑ ¹æ¹ýÀ¸·Î ÁÖ°í ½ÍÀ» ¶§ À§·ÂÀ» ¹ßÈÖÇÕ´Ï´Ù. º¸Á¶ÀûÀÎ ÆÄÀÏ µð½ºÅ© ¸®ÇÁ Á¤º¸¸¦ ÅëÇؼ ±×·± ÇÁ·Î±×·¥ »óŸ¦ ÃëµæÇÏ´Â µ¥µµ Æí¸®ÇÕ´Ï´Ù.
pipes
PHPÃø¿¡¼ »ý¼ºµÈ ÆÄÀÌÇÁÀÇ ³¡¿¡ ÇØ´çÇÏ´Â ÆÄÀÏ Æ÷ÀÎÅÍÀÇ ¹è¿.
cwd
¸í·ÉÀÇ Ãʱâ ÀÛ¾÷ µð·ºÅ丮. ¿ÏÀü ÆнºÀÎ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ±âº» °ª(ÇöÀçÀÇ PHPÇÁ·Î¼¼½ºÀÇ ÀÛ¾÷ µð·ºÅ丮)¸¦ »ç¿ëÇÏ°í ½Í´Ù¸é NULL ¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
env
½ÇÇàÇÏ´Â ¸í·ÉÀ» À§ÇÑ È¯°æ º¯¼öÀÇ ¹è¿. ÇöÀçÀÇ PHPÇÁ·Î¼¼½º¿Í °°Àº ȯ°æ º¯¼ö¸¦ »ç¿ëÇÏ´Â °æ¿ì´Â NULL ¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
other_options
±âŸ Ãß°¡ ¿É¼ÇÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇöÀç Áö¿øµÇ°í ÀÖ´Â ¿É¼ÇÀº ´ÙÀ½°ú °°½À´Ï´Ù.
suppress_errors (windows¸¸): TRUE ·Î Çϸé ÀÌ ÇÔ¼ö°¡ Ãâ·ÂÇÏ´Â ¿¡·¯¸¦ ¾ïÁ¦ÇÕ´Ï´Ù.
bypass_shell (windows¸¸): TRUE ·Î Çϸé,cmd.exe ²®ÁúÀ» ¿ìȸÇÕ´Ï´Ù.
¹Ýȯ °ª
ÇÁ·Î¼¼½º¸¦ ³ªÅ¸³»´Â ¸®¼Ò½º¸¦ °±°Ú½À´Ï´Ù. ÀÌ ¸®¼Ò½º´Â, »ç¿ëÀÌ Á¾·áµÈ ¶§ proc_close() ¸¦ »ç¿ëÇÏ°í °³¹æÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ½ÇÆÐÇßÀ» °æ¿ìFALSE ¸¦ °±°Ú½À´Ï´Ù.
º¯°æ ÀÌ·Â
¹öÀü ¼³¸í
5.2.1 other_options ÆĶó¹ÌÅÍ¿¡ ¿É¼ÇÀÌbypass_shell Ãß°¡µÇ¾ú½À´Ï´Ù.
¿¹
»ç·Ê 1 Aproc_open() ÀÇ ¿¹
<?php
$descriptorspec = array(
0 => array("pipe", "r"), // stdin Àº ÀÚ½Ä ÇÁ·Î¼¼½º°¡ Àбâ ÆÄÀÌÇÁÀÔ´Ï´Ù.
1 => array("pipe", "w"), // stdout Àº ÀÚ½Ä ÇÁ·Î¼¼½º°¡ ¾²´Â ÆÄÀÌÇÁÀÔ´Ï´Ù.
2 => array("file", "/tmp/error-output.txt", "a") // Àº ÆÄÀÏ¿¡¼ °Å±â¿¡ ±âÀÔÇÕ´Ï´Ù.
);
$cwd = '/tmp';
$env = array('some_option' => 'aeiou');
$process = proc_open('php', $descriptorspec, $pipes, $cwd, $env);
if (is_resource($process)) {
// $pipes Àº ÀÌ ½ÃÁ¡¿¡¼ ´ÙÀ½°ú °°Àº ÇüŸ¦ ÃëÇÏ°í ÀÖ½À´Ï´Ù.
// 0 => ÀÚ½Ä ÇÁ·Î¼¼½ºÀÇ ¼ö´Â nbsp;stdin ¿¡ ¿¬°áµÈ ±Û °¡´ÉÇÑ ÇÚµé
// 1 => ÀÚ½Ä ÇÁ·Î¼¼½ºÀÇ ¼ö´Â nbsp;stdout ¿¡ ¿¬°áµÈ Àб⠰¡´ÉÇÑ ÇÚµé
// ¸ðµç ¿¡·¯ Ãâ·ÂÀº nbsp;/tmp/error-output.txt ¿¡ ±âÀԵ˴ϴÙ.
fwrite($pipes[0], '<?php print_r($_ENV); ?>');
fclose($pipes[0]);
echo stream_get_contents($pipes[1]);
fclose($pipes[1]);
// ¾ÏÃʸ¦ ÇÇÇÏ·Á°í proc_close À» ºÎ¸£±â Àü¿¡
// ¸ðµç ä³ÎÀ» ´Ý´Â °ÍÀÌ Áß¿äÇÕ´Ï´Ù.
$return_value = proc_close($process);
echo "command returned $return_value\n";
}
?>
À§ÀÇ ¿¹ÀÇ Ãâ·ÂÀº ¿¹¸¦ µé¸é ÀÌÇÏ¿Í °°ÀÌ µË´Ï´Ù.
Array
(
[some_option] => aeiou
[PWD] => /tmp
[SHLVL] => 1
[_] => /usr/local/bin/php
)
command returned 0
ÁÖÀÇ:
WindowsÀÇ È£È¯¼º:2(stderr)º¸´Ù Å« ¹øÈ£ÀÇ µð½ºÅ© ¸®ÇÁ Ÿ´Â ÀÚ½Ä ÇÁ·Î¼¼½º¿¡ ½Â°è °¡´ÉÇÑ ÇÚµé·Î °Ç³Ê°¡Áö¸¸ WindowsÀÇ ¾ÆÅ°ÅØó´Â ÆÄÀÏ µð½ºÅ© ¸®ÇÁ ŸÀÇ ¹øÈ£¿Í ´õ ÀúÁú ÇÚµé°ú °ü·Ã ÁþÁö ¾Ê¾Æ ÀÚ½Ä ÇÁ·Î¼¼½º´Â ±×°ÍµéÀÇ Çڵ鿡 Á¢¼ÓÇÏ´Â ¹ýÀ» °¡ÁöÁö ¾Ê½À´Ï´Ù. stdin, stdout, stderr ´Â ±â´ë´ë·Î ¿òÁ÷ÀÔ´Ï´Ù.
ÁÖÀÇ:
¸¸¾à ´Ü ¹æÇâ(ÇÑ ¹æÇâ)ÀÇ ÆÄÀÌÇÁ¸¦ ÀÌ¿ëÇÒ »ÓÀ̶ó¸é popen() ¸¦ ¾²´Â °Ô ´õ °£´ÜÇÕ´Ï´Ù. |
|
̵̧ : 308 |
̵̧
¸ñ·Ï
|
|
|  |
|