ÔÚ
Web Ó¦ÓóÌÐòÖÐÔËÐÐ shell ÃüÁî
ѧϰÈçºÎ¸üºÃµØ¼¯³É½Å±¾ºÍÃüÁîÐй¤¾ß¡£±¾ÎÄ¿¼²ìÈçºÎʹÓà shell_exec()¡¢exec()¡¢passthru()
ºÍ system()£»°²È«µØ½«ÐÅÏ¢´«µÝµ½ÃüÁîÐУ»ÒÔ¼°°²È«µØ´ÓÃüÁîÐлñÈ¡ÐÅÏ¢¡£
Èç¹ûÄúʹÓùý PHP£¬Äú¾Í»á·¢ÏÖËüÊÇ´´½¨ÌØÐԷḻµÄ Web Ò³ÃæµÄ³öÉ«¹¤¾ß¡£×÷Ϊһ´ó½Å±¾ÓïÑÔ£¬PHP£º
1.ÈÝÒ×ѧϰ¡£
2.ÓÐÐí¶àÇ¿´óµÄ¿ò¼Ü£¨±ÈÈç CakePHP ºÍ CodeIgniter£©£¬ÈÃÄúÄܹ»Ïñ
Rails ³ÌÐòÔ±Ò»Ñù¸ßЧ¡£
3.Äܹ»Óë MySQL¡¢PostgreSQL¡¢Microsoft? SQL
Server£¬ÉõÖÁ Oracle ͨÐÅ¡£
4.Äܹ»ÇáËɵØÓë JavaScript ¿ò¼Ü¼¯³É£¬±ÈÈç script.aculo.us
ºÍ jQuery¡£
µ«ÓÐʱºò£¬ÄúÏë×ö¸ü¶àµÄÊÂÇ飬»ò±ØÐë×ö¸ü¶àµÄÊÂÇé¡£ÎÒµÄÒâ˼ÊÇÄú±ØÐëÖ±½ÓÓë
PHP ÔËÐеķþÎñÆ÷µÄÎļþϵͳ´ò½»µÀ¡£Äú×îÖÕÐèÒª´¦ÀíÎļþϵͳÉϵÄÎļþ£¬Á˽âÔËÐеĽø³Ì»òÖ´ÐÐÆäËûÈÎÎñ¡£
Ê×ÏÈ£¬Äú¶ÔÔÚ PHP ʹÓà file() ÃüÁî´ò¿ªÎļþºÜÂúÒâ¡£µ«ÊÇÔÚijÖ̶ֳÈÉÏ£¬Íê³ÉijЩÊÂÇéµÄΨһ;¾¶ÊÇÔÚ·þÎñÆ÷ÉÏÔËÐÐ
shell ÃüÁî²¢»ñµÃÌØ¶¨µÄÊä³ö¡£ÀýÈ磬Äú¿ÉÄÜÏëÖªµÀÌØ¶¨Ä¿Â¼°üº¬¶àÉÙ¸öÎļþ¡£»òÕßÄúÏëÖªµÀÏòij×éÈÕÖ¾ÎļþдÁ˶àÉÙÐÐÄÚÈÝ¡£»òÕßÄúÏë²Ù×÷ÕâЩÎļþ£¬½«ËüÃǸ´ÖƵ½ÁíÒ»¸öĿ¼£¬»òʹÓÃ
rsync ½«ËüÃÇ·¢Ë͵½ÁíÒ»¸öλÖá£
ÔÚ ¡°PHP ÃüÁîÐУ¿Êǵģ¬Äú¿ÉÒÔ£¡¡± ÕâÆªÎÄÕÂÖУ¬Roger McCoy
ÑÝʾÁËÈçºÎ´ÓÃüÁîÐÐÖ±½ÓʹÓà PHP ¡ª¡ª ²»ÐèÈκΠWeb ä¯ÀÀÆ÷¡£ÔÚÕâÆªÎÄÕÂÖУ¬ÎÒ´ÓÁíÒ»¸ö½Ç¶È¿´´ýÏàͬµÄÖ÷Ì⣬ÏòÄúչʾÈçºÎ½ôÃܵØÓëµ×²ã
shell ÃüÁ³É£¬ÒÔ¼°½«·µ»ØÖµ°üº¬µ½ÄúµÄ½çÃæºÍ½ø³ÌÖС£
½öµ±ÄúÔËÐÐÔÚ Linux?¡¢Berkeley Software Distribution
(BSD) »òһЩÆäËû UNIX? °æ±¾ÉÏʱ£¬ÕâЩ²Ù×÷²ÅÓÐЧ¡£ÎÒ¼ÙÉèÄúÔËÐÐÔÚ Linux-Apache-MySQL-PHP
(LAMP) ¶ÑÕ»ÉÏ¡£Èç¹ûÄúÔËÐÐÆäËû°æ±¾µÄ UNIX£¬¾ßÌåϸ½Ú¿ÉÄܲ»Í¬£¬ÒòΪÔÚÿ¸ö°æ±¾ÖÐÃüÁîÐеĿÉÓÃÐÔ¶¼²»Í¬¡£ÎÒÖªµÀºÜ¶àÈË»¹ÔÚ
Mac OS X£¨ÔËÐÐij¸ö°æ±¾µÄ BSD£©´ÓÊ¿ª·¢£¬Òò´ËÎÒ¾¡Á¿±£³ÖʾÀýÃüÁîµÄͨÓÃÐÔ£¬È·±£ÒÆÖ²·½±ã¡£
ÃüÁîÐиÅÊö
PHP Command Line Interface (CLI) Server
Application Programming Interface (SAPI) ÔÚ PHP V4.2.0
¿ªÊ¼·¢²¼£¬ÓÃÓÚÊÔÑéÄ¿µÄ¡£µ½ V4.3.0 ʱ£¬ÒѾÊܵ½ÍêÕûÖ§³Ö²¢ÇÒĬÈÏÆôÓá£PHP CLI SAPI ÔÊÐíÄú¿ª·¢
PHP Ö§³ÖµÄ shell ½Å±¾£¬ÉõÖÁÊÇ»ùÓÚ×ÀÃæµÄ½Å±¾¡£ÊÂʵÉÏ£¬¿ÉÒÔÓà PHP ´´½¨¿ÉÖ±½Ó´ÓÃüÁîÐÐÔËÐеŤ¾ß¡£²ÉÓÃÕâÖÖ·½Ê½£¬PHP
¿ª·¢ÈËÔ±¿ÉÒÔÏñ Perl¡¢AWK¡¢Ruby »ò shell ³ÌÐòÔ±Ò»Ñù¸ßЧ¡£
±¾ÎÄ̽¾¿¹¹½¨µ½ PHP ÖеŤ¾ß£¬ÈÃÄúÁ˽â PHP ÔËÐеĵײã shell
»·¾³ºÍÎļþϵͳ¡£PHP ΪִÐÐÍⲿÃüÁîÌṩ´óÁ¿º¯Êý£¬ÆäÖаüÀ¨ shell_exec()¡¢exec()¡¢passthru()
ºÍ system()¡£ÕâЩÃüÁîÊÇÏàËÆµÄ£¬µ«ÎªÄúÔËÐеÄÍⲿ³ÌÐòÌṩ²»Í¬µÄ½çÃæ¡£ËùÓÐÕâЩÃüÁî¶¼ÑÜÉúÒ»¸ö×Ó½ø³Ì£¬ÓÃÓÚÔËÐÐÄúÖ¸¶¨µÄÃüÁî»ò½Å±¾£¬²¢ÇÒÿ¸ö×Ó½ø³Ì»áÔÚÃüÁîÊä³öдµ½±ê×¼Êä³ö
(stdout) ʱ²¶×½ËüÃÇ¡£
shell_exec()
shell_exec() ÃüÁîÐÐʵ¼ÊÉϽöÊÇ·´Æ²ºÅ (`) ²Ù×÷·ûµÄ±äÌå¡£Èç¹ûÄú±àд¹ý
shell »ò Perl ½Å±¾£¬Äú¾ÍÖªµÀ¿ÉÒÔÔÚ·´Æ²ºÅ²Ù×÷·ûÄÚ²¿²¶×½ÆäËûÃüÁîµÄÊä³ö¡£ÀýÈ磬Çåµ¥ 1 ÏÔʾÁËÈçºÎʹÓ÷´Æ²ºÅÔÚµ±Ç°Ä¿Â¼Öлñȡÿ¸öÎı¾£¨.txt£©µÄµ¥´Ê¼ÆÊý¡£
Çåµ¥ 1. ʹÓ÷´Æ²ºÅ¼ÆËãµ¥´ÊÊýÁ¿
#! /bin/sh number_of_words=`wc -w *.txt` echo $number_of_words
#result would be something like:
#165 readme.txt 388 results.txt 588 summary.txt
#and so on.... |
ÔÚÄúµÄ PHP ½Å±¾ÖУ¬Äú¿ÉÒÔÔÚ shell_exec() ÖÐÔËÐÐÕâ¸ö¼òµ¥µÄÃüÁÈçÇåµ¥
2 Ëùʾ£¬²¢»ñÈ¡ÏëÒªµÄ½á¹û¡£ÕâÀï¼ÙÉèÔÚͬһ¸öĿ¼ÏÂÓÐһЩÎı¾Îļþ¡£
Çåµ¥ 2. ÔÚ shell_exec() ÖÐÔËÐÐÏàͬµÄÃüÁî
<?php $results = shell_exec('wc -w *.txt'); echo $results; ?> |
ÔÚͼ 1 ÖпÉÒÔ¿´µ½£¬»ñµÃµÄ½á¹ûÓë´Ó shell ½Å±¾µÃµ½µÄÒ»Ñù¡£ÕâÊÇÒòΪ shell_exec()
ÔÊÐíÄúͨ¹ý shell ÔËÐÐÍⲿ³ÌÐò£¬È»ºóÒÔ×Ö·û´®µÄÐÎʽ·µ»Ø½á¹û¡£

ͼ 1. ͨ¹ý shell_exec() ÔËÐÐ shell ÃüÁîµÄ½á¹û
×¢Ò⣬½öʹÓÃºóÆ²ºÅ²Ù×÷·ûÒ²»áµÃµ½ÏàͬµÄ
Çåµ¥ 3. ½öʹÓÃºóÆ²ºÅ²Ù×÷·û
<?php $results = `wc -w *.txt`; echo $results; ?> |
Çåµ¥ 4 ¸ø³öÁËÒ»ÖÖ¸ü¼Ó¼òµ¥µÄ·½·¨¡£
Çåµ¥ 4. ¸ü¼Ó¼òµ¥µÄ·½·¨
<?php echo `wc -w *.txt`; ?> |
ͨ¹ý UNIX ÃüÁîÐÐºÍ shell ½Å±¾Äܹ»Íê³ÉºÜ¶à¶«Î÷£¬ÖªµÀÕâµãºÜÖØÒª¡£ÀýÈ磬Äú¿ÉÒÔʹÓÃÊúÏß½«ÃüÁîÁ¬½ÓÆðÀ´¡£ÄúÉõÖÁ¿ÉÒÔʹÓòÙ×÷·ûÔÚÆäÖд´½¨
shell ½Å±¾£¬²¢ÇÒ½öµ÷Óà shell ½Å±¾£¨¸ù¾ÝÐèҪʹÓûò²»Ê¹ÓòÎÊý£©¡£
ÀýÈ磬Èç¹ûÄú½öÏ£Íû¼ÆËã¸ÃĿ¼ÏµÄǰ 5 ¸öÎı¾ÎļþµÄµ¥´ÊÊý£¬ÄÇô¿ÉÒÔʹÓÃÊúÏß (|) ½« wc ºÍ head
ÃüÁîÁ¬½ÓÆðÀ´¡£ÁíÍ⣬Äú»¹¿ÉÒÔ½«Êä³ö½á¹û·Åµ½ pre ±ê¼ÇÄÚ²¿£¬ÈÃËüÄܹ»¸üÃÀ¹ÛµØ³ÊÏÖÔÚ Web ä¯ÀÀÆ÷ÖУ¬ÈçÏÂËùʾ¡£
Çåµ¥ 5. ¸ü¼Ó¸´Ô shell ÃüÁî
<?php $results = shell_exec('wc -w *.txt | head -5'); echo "<pre>".$results . "</pre>"; ?> |
ͼ 2 ÑÝʾÁËÔËÐÐÇåµ¥ 5 µÄ½Å±¾µÃµ½µÄ½á¹û¡£

ͼ 2. ´Ó shell_exec() ÔËÐиü¸´Ô shell ÃüÁîµÃµ½µÄ½á¹û
ÔÚ±¾ÎĵĺóÃæ²¿·Ö£¬Äú½«Ñ§Ï°ÈçºÎʹÓà PHP ΪÕâЩ½Å±¾´«µÝ²ÎÊý¡£ÏÖÔÚÄú¿ÉÒÔ½«Ëü¿´×÷ÔËÐÐ shell ÃüÁîµÄÒ»ÖÖ·½·¨£¬µ«Òª¼ÇסÄúÖ»ÄÜ¿´µ½±ê×¼Êä³ö¡£Èç¹ûÃüÁî»ò½Å±¾³öÏÖ´íÎó£¬Äú½«¿´²»µ½±ê×¼µÄ´íÎó
(stderr)£¬³ý·ÇÄúͨ¹ýÊúÏß½«ËüÌí¼Óµ½ stdout¡£
passthru()
passthru() ÔÊÐíÄúÔËÐÐÍⲿ³ÌÐò£¬²¢ÔÚÆÁÄ»ÉÏÏÔʾ½á¹û¡£Äú²»ÐèҪʹÓà echo »ò return
À´²é¿´½á¹û£»ËüÃÇ»áÏÔʾÔÚä¯ÀÀÆ÷ÉÏ¡£Äú¿ÉÒÔÌí¼Ó¿ÉÑ¡µÄ²ÎÊý£¬¼´±£´æ´ÓÍⲿ³ÌÐò·µ»ØµÄ´úÂëµÄ±äÁ¿£¬±ÈÈç±íʾ³É¹¦µÄ
0£¬ÕâΪµ÷ÊÔÌṩ¸üºÃµÄ»úÖÆ¡£
ÔÚÇåµ¥ 6 ÖУ¬ÎÒʹÓà passthru() ÃüÁîÔËÐÐÔÚÇ°ÃæÐ¡½ÚÔËÐеĵ¥´Ê¼ÆÊý½Å±¾¡£ÈçÄúËù¼û£¬ÎÒ»¹Ìí¼ÓÒ»¸ö°üº¬·µ»Ø´úÂëµÄ
$returnval ±äÁ¿¡£
Çåµ¥ 6. ʹÓà passthru() ÃüÁîÔËÐе¥´Ê¼ÆÊý½Å±¾
<?php passthru('wc -w *.txt | head -5',$returnval); echo "<hr/>".$returnval; ?> |
×¢Ò⣬ÎÒ²»ÐèҪʹÓà echo ·µ»ØÈκζ«Î÷¡£½á¹û»áÖ±½ÓÏÔʾÔÚÆÁÄ»ÉÏ£¬ÈçÏÂËùʾ¡£

ͼ 3. ʹÓà return ´úÂëÔËÐÐ passthru() ÃüÁîµÄ½á¹û
ÔÚÇåµ¥ 7 ÖУ¬ÎÒͨ¹ýɾ³ý½Å±¾Í·²¿µÄ 5 Ç°ÃæµÄ¶ÌºáÏß (-) ÒýÈëÒ»¸öС´íÎó¡£
Çåµ¥ 7. ÔÚµ¥´Ê¼ÆÊý½Å±¾ÖÐÒýÈëÒ»¸ö´íÎó
<?php //we introduce an error below (removing - from the head command)
passthru('wc -w *.txt | head 5',$returnval);
echo "<hr/>".$returnval;
?> |
×¢Ò⣬½Å±¾Î´Äܰ´ÕÕÔ¤ÆÚÔËÐС£ÄúµÃµ½µÄÊÇÒ»¸ö¿Õ°×µÄÆÁÄ»£¬Ò»ÌõˮƽÏߺͷµ»ØÖµ 1£¬Èçͼ 4 Ëùʾ¡£Õâ¸ö·µ»Ø´úÂëͨ³£±íÃ÷·¢ÉúÁËijЩ´íÎó¡£Èç¹ûÄܹ»²âÊÔ·µ»Ø´úÂ룬²éÕÒºÍÐÞ¸´´íÎó¾ÍÈÝÒ×¶àÁË¡£

ͼ 4. ʹÓà passthru() ʱ²é¿´´íÎó´úÂë
exec()
exec() ÃüÁîÓë shell_exec() ÏàËÆ£¬²»Í¬Ö®´¦ÊÇËü·µ»ØÊä³öµÄ×îºóÒ»ÐУ¬²¢ÇÒ¿ÉÑ¡µØÓÃÃüÁîµÄÍêÕûÊä³öºÍ´íÎó´úÂëÌî³äÊý×é¡£Çåµ¥
8 չʾÁ˵±ÔËÐÐ exec() ¶ø²»²¶×½Êý¾ÝÊý×éÖеÄÊý¾Ýʱ·¢ÉúµÄÊÂÇé¡£
Çåµ¥ 8. ÔËÐÐ exec() ¶ø²»²¶×½Êý¾ÝÊý×éÖеÄÊý¾Ý
<?php $results = exec('wc -w *.txt | head -5'); echo $results;
#would print out just the last line or results,
i.e.:
#3847 myfile.txt
?> |
ΪÁ˲¶×½Êý×éÖеĽá¹û£¬Òª½«¸ÃÊý×éµÄÃû³Æ×÷ΪµÚ¶þ¸ö²ÎÊýÌí¼Óµ½ exec()¡£ÎÒÔÚÇåµ¥ 9 ÖÐÖ´ÐÐÁËÕâ¸ö²½Ö裬²¢ÒÔ
$data ×÷ΪÊý×éµÄÃû³Æ¡£
Çåµ¥ 9. ´Ó exec() ²¶×½Êý¾ÝÊý×éµÄ½á¹û
<?php $results = exec('wc -w *.txt | head -5',$data); print_r($data);
#would print out the data array:
#Array ( [0]=> 555 text1.txt [1] => 283
text2.txt)
?> |
ÔÚ²¶×½Êý×éÖеĽá¹ûÖ®ºó£¬Äú¿ÉÒÔ¶ÔÿÐнøÐÐһЩ´¦Àí¡£ÀýÈ磬Äú¿ÉÒÔÔÚµÚÒ»¸ö¿Õ¸ñ´¦½øÐл®·Ö£¬½«·ÖÀëµÄÖµ´æ´¢ÔÚÊý¾Ý¿â±íÖУ¬»ò¶Ôÿ¸öÐÐÓ¦ÓÃÌØ¶¨µÄ¸ñʽ»ò±ê¼Ç¡£
system()
ÈçÇåµ¥ 10 Ëùʾ£¬system() ÃüÁîÊÇÒ»ÖÖ»ìºÏÌå¡£ËüÏñ passthru() Ò»ÑùÖ±½ÓÊä³ö´ÓÍⲿ³ÌÐò½ÓÊÕµ½µÄÈκζ«Î÷¡£Ëü»¹Ïñ
exec() Ò»Ñù·µ»Ø×îºóÒ»ÐУ¬²¢Ê¹·µ»Ø´úÂë¿ÉÓá£
Çåµ¥ 10. system() ÃüÁî
<?php system('wc -w *.txt | head -5');
#would print out:
#123 file1.txt 332 file2.txt 444 file3.txt
#and so on
?> |
һЩÀý×Ó
ÏÖÔÚÄúÒѾÁ˽âÈçºÎʹÓÃÕâЩ PHP ÃüÁµ«¿ÉÄÜÈÔÈ»ÓÐһЩÒÉÎÊ¡£ÀýÈ磬ʲôʱºòÓ¦¸ÃʹÓÃÄĸöÃüÁÕâÍêÈ«ÓÉÄúµÄÐèÇó¾ö¶¨¡£
´ó¶àÊýÇé¿öÏ£¬ÎÒʹÓà exec() ÃüÁîºÍÊý¾ÝÊý×é´¦ÀíËùÓж«Î÷¡£»òÕß¶Ô¸ü¼òµ¥µÄÃüÁîʹÓà shell_exec()£¬ÓÈÆäÊDz»¹ØÐĽá¹ûʱ¡£Èç¹û½öÐè·µ»ØÒ»¸ö
shell ½Å±¾£¬ÎÒ¾ÍʹÓà passthru()¡£Í¨³££¬ÎÒÔÚ²»Í¬µÄ³¡ºÏÖÐʹÓò»Í¬µÄº¯Êý£¬²¢ÇÒÓÐʱËüÃÇÊÇ¿ÉÒÔ»¥»»µÄ¡£ÕâÍêȫȡ¾öÓÚÎÒµÄÐÄÇéºÍҪʵÏÖµÄÄ¿µÄ¡£
Äú¿ÉÄÜÌáÎʵÄÁíÒ»¸öÎÊÌâÊÇ ¡°ËüÃǵij¤´¦ÊÇʲô£¿¡±¡£Èç¹ûÄúûÓÐÍ·Ð÷£¬»òÕßÒ»¸öÏîÄ¿·Ç³£ÊʺÏʹÓà shell
ÃüÁµ«²»ÖªµÀÈçºÎʹÓã¬ÄÇôÎÒÔÚÕâÀïÌṩһЩ¼û½â¡£
Èç¹ûÄúÕýÔÚ±àдһ¸öÌṩ¸÷ÖÖ±¸·Ý»òÎļþ´«Ê书ÄܵÄÓ¦ÓóÌÐò£¬Äú¿ÉÒÔÑ¡ÔñʹÓà shell_exec() »òÕâÀïÌṩµÄÆäËûÃüÁîÖ®Ò»ÔËÐÐ
rsync Ö§³ÖµÄ shell ½Å±¾¡£Äú¿ÉÒÔ±àд shell ½Å±¾Ê¹Æä°üº¬±ØÒªµÄ rsync ÃüÁȻºóʹÓÃ
passthru() ¸ù¾ÝÓû§µÄÃüÁî»ò cron ×÷ÒµÖ´ÐÐËü¡£
ÀýÈ磬һλÓû§ÔÚÄúµÄÓ¦ÓóÌÐòÖÐÓÐÊʵ±µÄȨÏÞ£¨±ÈÈç¹ÜÀíԱȨÏÞ£©£¬ËûÏ뽫 50 ¸ö PDF Îļþ´ÓÒ»¸ö·þÎñÆ÷·¢Ë͵½ÁíÒ»¸ö·þÎñÆ÷¡£ÄÇô£¬¸ÃÓû§ÐèÒªÔÚÓ¦ÓóÌÐòÖе¼º½µ½ÕýÈ·µÄλÖ㬵¥»÷
Transfer£¬Ñ¡ÔñÐèÒª·¢Ë굀 PDF£¬È»ºóµ¥»÷ Submit¡£ÔÚÕâ¸ö¹ý³ÌÖУ¬¸Ã±íµ¥Ó¦¸ÃÓÐÒ»¸ö PHP
½Å±¾£¬ËüʹÓ÷µ»ØÑ¡Ïî±äÁ¿Í¨¹ý passthru() ÔËÐÐ rsync ½Å±¾£¬ÕâÑùÄú¾ÍÖªµÀÊÇ·ñ·¢ÉúÎÊÌ⣬ÈçÏÂËùʾ¡£
Çåµ¥ 11. ͨ¹ý passthru() ÔËÐÐ rsync ½Å±¾µÄʾÀý PHP ½Å±¾
<?php passthru('xfer_rsync.sh',$returnvalue);
if ($returnvalue != 0){
//we have a problem!
//add error code here
}else{
//we are okay
//redirect to some other page
}
?> |
Èç¹ûÄúµÄÓ¦ÓóÌÐòÐèÒªÁгö½ø³Ì»òÎļþ£¬»ò¹ØÓÚÕâЩ½ø³Ì»òÎļþµÄÊý¾Ý£¬Äú¿ÉÒÔʹÓñ¾ÎÄ×ܽáµÄÃüÁîÖ®Ò»ÇáËÉʵÏÖÕâ¸öÄ¿µÄ¡£ÀýÈ磬һ¸ö¼òµ¥µÄ
grep ÃüÁîÄܹ»°ïÖúÄúÕÒµ½Æ¥ÅäÌØ¶¨ËÑË÷Ìõ¼þµÄÎļþ¡£½«ËüÓë exec() ÃüÁîÒ»ÆðʹÓÿÉÒÔ½«½á¹û±£´æµ½Ò»¸öÊý×éÖУ¬ÕâÔÊÐíÄú¹¹½¨Ò»¸ö
HTML ±í»ò±íµ¥£¬ËüÃÇÓÖ½øÒ»²½ÔÊÐíÄúÔËÐÐÆäËûÃüÁî¡£
µ½Ä¿Ç°ÎªÖ¹£¬ÎÒÌÖÂÛÁËÓû§Éú³ÉµÄʼþ ¡ª¡ª Óû§Ö»Òª°´Ï°´Å¥»òµ¥»÷Á´½Ó£¬PHP ¾ÍÔËÐÐÏàÓ¦µÄ½Å±¾¡£Äú»¹¿ÉÒÔ½«¶ÀÁ¢µÄ
PHP ½Å±¾ºÍ cron »òÆäËûÈճ̰²ÅųÌÐòÒ»ÆðʹÓ㬴ӶøÊµÏÖһЩÓÐȤµÄЧ¹û¡£ÀýÈ磬Èç¹ûÄúÒ»¸ö±¸·Ý½Å±¾£¬Äú¿ÉÒÔͨ¹ý
cron ÔËÐÐËü£¬»òÕß½«Ëü´ò°üµ½ PHP ½Å±¾ºóÔÚÔËÐС£ÎªÊ²Ã´ÒªÕâÑù×ö£¿ÕâËÆºõÊǶàÓàµÄ£¬²»ÊÇÂ𣿲»ÊÇÕâÑùµÄ
¡ª¡ª ÄúÐèÒªÕâÑù¿¼ÂÇ£¬Äú¿ÉÒÔͨ¹ý exec() »ò passthru() ÔËÐб¸·Ý½Å±¾£¬È»ºó¸ù¾Ý·µ»Ø´úÂëÖ´ÐÐһЩÐÐΪ¡£Èç¹û³öÏÖ´íÎó£¬Äú¿ÉÒÔ½«Æä¼Ç¼µ½´íÎóÈÕÖ¾»òÊý¾Ý¿âÖУ¬»ò·¢ËÍÒ»·â¾¯¸æµç×ÓÓʼþ¡£Èç¹û½Å±¾³É¹¦£¬Äú¿ÉÒÔ½«ÔʼµÄÊä³öת´¢µ½Êý¾Ý¿â£¨ÀýÈ磬rsync
ÓÐÒ»¸öÏ꾡£¨verbose£©Ä£Ê½£¬¶ÔËæºóÕï¶ÏÎÊÌâÊ®·ÖÓÐÓã©¡£
°²È«
ÎÒÃÇÔÚÕâÀï¼òÒªÌÖÂÛһϰ²È«ÐÔ£ºÈç¹ûÄú½ÓÊÜÓû§ÊäÈë²¢½«ÐÅÏ¢´«µÝµ½ shell£¬ÄÇô×îºÃ¹ýÂËÓû§ÊäÈ롣ɾ³ýÄúÈÏΪÓꦵÄÃüÁîºÍ²»ÔÊÐíµÄÄÚÈÝ£¬±ÈÈç
sudo£¨×÷Ϊ³¬¼¶Óû§ÔËÐУ©»ò rm£¨É¾³ý£©¡£ÊÂʵÉÏ£¬Äú¿ÉÄܲ»Ï£ÍûÓû§·¢ËÍ¿ª·ÅµÄÇëÇ󣬶øÊÇÈÃËûÃÇ´ÓÁбíÖÐÑ¡Ôñ¡£
ÀýÈ磬ÄúÔËÐÐÒ»¸ö½ÓÊÜÎļþÁбí×÷Ϊ²ÎÊýµÄ´«Êä³ÌÐò£¬ÄúÓ¦¸Ãͨ¹ýһϵÁи´Ñ¡¿òÁгöËùÓÐÎļþ¡£Óû§¿ÉÒÔÑ¡ÔñºÍÈ¡ÏûÑ¡ÔñÎļþ£¬²¢Í¨¹ýµ¥»÷
Submit ¼¤»î rsync shell ½Å±¾¡£Óû§²»ÄÜ×Ô¼ºÊäÈëÎļþ»òʹÓÃÕýÔò±í´ïʽ¡£
½áÊøÓï
ÔÚ±¾ÎÄÖУ¬ÎÒÑÝʾÁËʹÓà PHP ÃüÁîÔËÐÐ shell ½Å±¾ºÍÆäËûÃüÁîµÄ»ù´¡ÖªÊ¶¡£ÕâЩ PHP ÃüÁî°üÀ¨
shell_exec()¡¢exec()¡¢passthru() ºÍ system()¡£ÏÖÔÚ£¬ÄúÓ¦¸ÃÔÚ×Ô¼ºµÄÓ¦ÓóÌÐòÖÐʵ¼ùѧµ½µÄ֪ʶ¡£
|