1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

روش های اجرای دستورات سیستم با استفاده از ‏php

شروع موضوع توسط minaaa ‏12/11/11 در انجمن PHP

  1. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    [h=2][/h]
    به طور کلی 4 روش برای اجرای دستور با ‏PHP‏ وجود دارد:‏
    ‏1. علامت ‏‎`‎‏: ‏PHP‏ دستور بین دو علامت ‏‎`‎‏ را روی سیستم اجرا کرده و کل خروجی را نمایش می دهد.‏
    ‏2. تابع ‏system‏: این تابع دستور سیستم را اجرا کرده و کل خروجی را نمایش می دهد، همچنین آخرین خط ‏خروجی را نیز بر می گرداند.‏
    ‏3. تابع ‏exec‏: این تابع دستور را روی سیستم اجرا می کند و کل خروجی را در یک آرایه قرار می دهد و آخرین خط ‏خروجی را برمی گرداند.‏
    ‏4. تابع ‏passthru‏: این تابع دستور را روی سیستم اجرا کرده و کل خروجی را نمایش می دهد.‏

    روش اول: استفاده از علامت ‏‎`‎
    برای اجرای دستورات سیستم با این روش کافی است دستور سیستم را بین دو علامت ‏‎`‎‏ قرار داده و در صورت نیاز ‏خروجی آن در یک متغیر ذخیره و یا خروجی آن را با ‏echo‏ نمابش دهید.‏
    مثال:‏
    PHP Code:
    ‎$result = `dir c:\php`;
    Echo $result;

    روش دوم: استفاده از تابع ‏system‏:‏
    در این روش دستور اجرا شده و خروجی آن نمایش داده می شود و آخرین خط خروجی برگردانده می شود، مثال:‏
    PHP Code:
    PHP:
     ‎$result system(‎‏"‏ir  c:\php‏"‏‎;‎ 
    با این دستور، خروجی نمایش داده می شود، حال اگر آن را ‏echo‏ کنید خروجی دیگری به صورت زیر خواهید دید:‏
    كد:
    PHP:
     ‎11 Dir(s)  566,263,808 bytes free‎ 
    روش سوم: استفاده از تابع ‏exec‏:‏
    در این روش دستور اجرا می شود ولی خروجی آن نمایش داده نمی شود. خروجی به صورت خط به خط درون یک ‏آرایه ذخیره می شود و برگردانده می شود. برای ذخیره ی آرایه باید آرگومان دوم را نیز مشخص کنید.‏
    مثال:‏
    PHP Code:
    PHP:
     ‎$result =  exec(‎‏"‏ir c:\php‏"‏‎);‎ 
    دستور اجرا می شود ولی اگر آن را ‏echo‏ کنید تنها خط آخر آرایه نمایش داده می شود:‏
    كد:
    PHP:
     ‎11 Dir(s)  566,263,808 bytes free‎ 
    برای مشاهده ی کلیه ی خطوط آرایه می توانید از ‏foreach‏ استفاده کنید، اما قبل از آن باید خروجی ‏exec‏ را در ‏یک متغیر ذخیره کنید و برای این کار نام متغیر را به عنوان آرگومان دوم تابع بنویسید:‏
    PHP Code:
    PHP:
     ‎$result exec(‎‏"‏dir c:\php‏"‏‎,$dirout);‎ 
    دستور فوق خط آخر آرایه را در ‏result‏ ذخیره می کند. کل خروجی را به صورت یک آرایه در ‏dirout‏ ذخیره می کند. ‏دستور را اجرا می کند ولی خروجی را نشان نمی دهد.برای مشاهده ی کلیه ی خطوط خروجی به صورت زیر عمل می ‏شود:‏
    PHP Code:
    PHP:
      foreach($dirout as $line)
    {
    echo ‎‏"‏‎$line\n‏"‏‎;
    ‎  
    }‎
    روش چهارم: استفاده ازتابع ‏passthru‏:‏
    با این تابع، دستور اجرا شده و کل خروجی نشان داده می شود. مثال:‏
    PHP Code:
    PHP:
      passthru(‎‏"‏dir c:\php‏"‏‎);‎