PHP. Варианты выполнить команду оболочки

Discussion in 'PHP' started by lukmus, 1 Dec 2009.

  1. lukmus

    lukmus Elder - Старейшина

    Joined:
    18 Nov 2009
    Messages:
    366
    Likes Received:
    115
    Reputations:
    23
    Все что знал перепробывал, все блокируеться.
    Хочу выполнить команду оболочки и соответсвенно пробывал:
    shell_exec(), ``, passthru, exec(), system() и popen()-fread()-pclose().
    Может кто-нить знает еще варианты на php5?
     
  2. b3

    b3 Moderator

    Joined:
    5 Dec 2004
    Messages:
    2,041
    Likes Received:
    933
    Reputations:
    199
    Для начала покажи результат disable_functions
    PHP:
    <?php phpinfo(INFO_CONFIGURATION);?>
     
    _________________________
  3. lukmus

    lukmus Elder - Старейшина

    Joined:
    18 Nov 2009
    Messages:
    366
    Likes Received:
    115
    Reputations:
    23
    b3, спасибо не знал, вот вывод:
    Directive Local Value Master Value
    allow_call_time_pass_reference On On
    allow_url_fopen Off Off
    allow_url_include Off Off
    always_populate_raw_post_data Off Off
    arg_separator.input & &
    arg_separator.output & &
    asp_tags Off Off
    auto_append_file no value no value
    auto_globals_jit On On
    auto_prepend_file no value no value
    browscap no value no value
    default_charset no value no value
    default_mimetype text/html text/html
    define_syslog_variables Off Off
    disable_classes no value no value
    disable_functions dl, shell_exec, exec, system, passthru, popen, proc_open, proc_nice, proc_get_status, proc_close, proc_terminate, posix_mkfifo, set_time_limit, chown, chgrp, disk_total_space, disk_free_space dl, shell_exec, exec, system, passthru, popen, proc_open, proc_nice, proc_get_status, proc_close, proc_terminate, posix_mkfifo, set_time_limit, chown, chgrp, disk_total_space, disk_free_space
    display_errors On On
    display_startup_errors Off Off
    doc_root /home/xxxx.ru/xxxx/sites/www no value
    docref_ext no value no value
    docref_root no value no value
    enable_dl On On
    error_append_string no value no value
    error_log no value no value
    error_prepend_string no value no value
    error_reporting 6135 6135
    expose_php On On
    extension_dir ./ ./
    file_uploads On On
    highlight.bg #FFFFFF #FFFFFF
    highlight.comment #FF8000 #FF8000
    highlight.default #0000BB #0000BB
    highlight.html #000000 #000000
    highlight.keyword #007700 #007700
    highlight.string #DD0000 #DD0000
    html_errors On On
    ignore_repeated_errors Off Off
    ignore_repeated_source Off Off
    ignore_user_abort Off Off
    implicit_flush Off Off
    include_path .:/usr/local/lib/php .:/usr/local/lib/php
    log_errors Off Off
    log_errors_max_len 1024 1024
    magic_quotes_gpc On On
    magic_quotes_runtime Off Off
    magic_quotes_sybase Off Off
    mail.force_extra_parameters -fxxxxx.xxxx.ru@xxxxx.xxxxx.ru no value
    max_execution_time 30 15
    max_input_nesting_level 64 64
    max_input_time 30 30
    memory_limit 32M 32M
    open_basedir /home/xxxxx.ru/xxxxx/ no value
    output_buffering no value no value
    output_handler no value no value
    post_max_size 8M 8M
    precision 12 12
    realpath_cache_size 16K 16K
    realpath_cache_ttl 120 120
    register_argc_argv On On
    register_globals On On
    register_long_arrays On On
    report_memleaks On On
    report_zend_debug On On
    safe_mode Off Off
    safe_mode_exec_dir no value no value
    safe_mode_gid Off Off
    safe_mode_include_dir no value no value
    sendmail_from no value no value
    sendmail_path /usr/sbin/sendmail -t -i /usr/sbin/sendmail -t -i
    serialize_precision 100 100
    short_open_tag On On
    SMTP localhost localhost
    smtp_port 25 25
    sql.safe_mode Off Off
    track_errors Off Off
    unserialize_callback_func no value no value
    upload_max_filesize 5M 2M
    upload_tmp_dir /home/xxxxxx.ru/xxxxxx/tmp/ no value
    user_dir no value no value
    variables_order EGPCS EGPCS
    xmlrpc_error_number 0 0
    xmlrpc_errors Off Off
    y2k_compliance On On
    zend.ze1_compatibility_mode Off Off
     
    #3 lukmus, 1 Dec 2009
    Last edited: 1 Dec 2009
  4. Alexander89

    Alexander89 Member

    Joined:
    30 Nov 2009
    Messages:
    30
    Likes Received:
    8
    Reputations:
    0
    Я думаю что нечего у тебя не получится. Норм сервер настроен
     
  5. b3

    b3 Moderator

    Joined:
    5 Dec 2004
    Messages:
    2,041
    Likes Received:
    933
    Reputations:
    199
    PS set_time_limit его отключили а ini_set забыли отключить, тоесть получается можно снят ограничение за счет его:
    PHP:
    <?php
    echo 'max_execution_time: ';
    print_r(ini_get('max_execution_time'));
    set_time_limit(0);
    ini_set('max_execution_time','0');
    echo 
    '<br>max_execution_time: ';
    print_r(ini_get('max_execution_time'));    
    exit;
    ?>
     
    _________________________
  6. lukmus

    lukmus Elder - Старейшина

    Joined:
    18 Nov 2009
    Messages:
    366
    Likes Received:
    115
    Reputations:
    23
    Походу и ini_set() здесь беспомощна(использовался скрипт приведенный b3):
     
    #6 lukmus, 1 Dec 2009
    Last edited: 1 Dec 2009
  7. b3

    b3 Moderator

    Joined:
    5 Dec 2004
    Messages:
    2,041
    Likes Received:
    933
    Reputations:
    199
    Ты неправильно понял. Ини сетом можно переконфигурировать некоторые директивы ПХП, но ето не значит что можно сделать ини сет и включить system();
     
    _________________________
  8. Root-access

    Root-access Elder - Старейшина

    Joined:
    18 Jun 2008
    Messages:
    193
    Likes Received:
    195
    Reputations:
    91

    Может он и правильно понял)
    Просто ты использовал в скрипте set_time_limit(), который отключён.

    ТС, почитай ещё вот это: http://www.xakep.ru/post/26964/default.asp
     
  9. b3

    b3 Moderator

    Joined:
    5 Dec 2004
    Messages:
    2,041
    Likes Received:
    933
    Reputations:
    199
    Ну так я использовал как пример, неужели нужно разжевать чтоб стало понятно:
    1-е действие: выводим стандартныое ограничение на время выполнения.
    print_r(ini_get('max_execution_time'));
    2-е действие: делаем неограниченое время выполнения отключенной функцией сет_тайм_лимит. Потом нужно было опять сделать вывод, но я забыл =) Ограничение не снято и мы получаем Ворнинг.
    3-е действие ставит Ини_сетом, и выводим результат.
     
    _________________________
  10. lukmus

    lukmus Elder - Старейшина

    Joined:
    18 Nov 2009
    Messages:
    366
    Likes Received:
    115
    Reputations:
    23
    да все я верно понил, после
    PHP:
    ini_set('max_execution_time','0');
    max_execution_time должно было равняться 0, и на выводе
    PHP:
    print_r(ini_get('max_execution_time'));     
    должно было вывести 0, а вывело 30, значит ничего не изменилось
     
  11. imajo.ati

    imajo.ati Banned

    Joined:
    21 Feb 2008
    Messages:
    232
    Likes Received:
    62
    Reputations:
    8
    попробуй pcntl_exec