За последние 24 часа нас посетили 71223 программиста и 3501 робот. Сейчас ищут 2783 программиста ...

php не находит оператор system()

Тема в разделе "PHP для профи", создана пользователем TCHProgrammer, 1 апр 2025.

  1. TCHProgrammer

    TCHProgrammer Активный пользователь

    С нами с:
    8 апр 2015
    Сообщения:
    10
    Симпатии:
    1
    0
    Я выхожу на страницу сайта на Битрикс и там есть оператор system('du -h --max-depth=2 '.BASE_PATH.'/bitrix/', $retval); Мне пишется ошибка

    "Fatal error: Uncaught Error: Call to undefined function system() in /var/www/gipermarmax.ru/local/swiz.php:94 Stack trace: #0 /var/www/gipermarmax.ru/local/swiz.php(70): dirSizeList() #1 {main} thrown in /var/www/gipermarmax.ru/local/swiz.php on line 94".

    У меня стоит php 8.3.6. nginx/1.18.0 (Ubuntu). Я исследовал эту проблему, но не получил желаемого результата. Вот что мне предлагали: не все библиотеки php установлены, нужно сделать следующее:
    Код (Text):
    1. echo 'SYSTEM PATH:' . getenv('PATH');
    2. putenv('PATH=' . getenv('PATH') . '; [НУЖНЫЙ ПУТЬ]');
    Но у меня после первой команды пишется: "syntax error near unexpected token `('", точнее то, что на странице https://ospanel.io/forum/viewtopic.php?t=3378 . А вот здесь я вообще ничего не понял: https://www.drupal.org/project/drupal/issues/4013. В аннотации к php system() присутствует как в php7, так и в php8, это не устаревший оператор. Помогите, пожалуйста, решить этот вопрос.
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.832
    Симпатии:
    1.335
    Адрес:
    Лень
    \system()
    или
    <?php
    phpinfo();

    возможно у тебя намеренно на сервере отключены/внесены в список запрещенных функций. Таким грешат бесплатные хосты
     
  3. acvatoris

    acvatoris Новичок

    С нами с:
    2 июн 2024
    Сообщения:
    9
    Симпатии:
    1
    Если есть доступ к php.ini , то проверьте строку
    Код (Text):
    1. disable_functions =
    если функция system указана в значении данной директивы, то нужно ее убрать из списка.
    Возможно используются политики безопастности для этого нужно проверить включена ли директива open_basedir в php.ini
    Если же у вас сайт на хостинге, последуйте совету выше, посмотрите phpinfo() - конфигурацию disable_function и если она отключена, то нужно написать в тех. поддрежку.