на PHP на сервере перестал выполняться shell_exec

159
05 октября 2018, 14:20

На сайте (на сервере) выполняется следующий php код (mysite/test.php):

    // получить информацию и последней ревизии проекта 
    $revisionData = shell_exec('svn info -r HEAD "https://mysite:8443/svn/mysite-repository/"');
    // извлечь данные из полученной информации
//  $res1 = preg_match('|^Revision: (\d+)$|mei',         $revisionData, $revisionLastVersion);
//  $res2 = preg_match('|^Last Changed Date: (.*)$|mei', $revisionData, $revisionLastTimeUpdate);
    // сформировать результат
    $projectInfo = array(
        'revisionLastVersion'     => (($res1 == 0) ? 0 : $revisionLastVersion[1]),
        'revisionLastTimeUpdate'  => (($res2 == 0) ? 0 : $revisionLastTimeUpdate[1]),
        'creation_time'           => date("Y-m-d H:i:s O (D, d M Y)"),
    );

который должен определить, когда последний раз я сохранял сайт в репозитории (svn).

Раньше все работало замечательно, но после перезагрузки админами сервера данный код перестал работать. Ошибки не выдаются никакие, просто как будто висит.

Когда на сервере пытаюсь выполнить команду svn info -r HEAD "https://mysite:8443/svn/mysite-repository/" на сервере локально через командную строку (с правами админа или нет - без разницы), то всё работает замечательно.

В чём может быть дело?

Answer 1

варианта 2 - права на исполнение или вообще запрет функции скорее первое - особенно если через http запуск от веб-юзера. спросите у админов - как так получилось

Answer 2

обнаружилось следующее:

shell_exec нормальное выполняет бесправные команды, типа schell_exec('echo TEST') или exec выполняет .bat с такой же командой, но вот вызов svn напрочь отказывается делать и как будто зависает.

Подумалось, что это может быть связано с правами, т.е. нет у пользователя прав на такие операции.

В результате для php.exe для группы Users назначил все права (были только на чтение и исполнение), и в результате ВСЁ ЗАРАБОТАЛО!!!

Осталось непонятным только как такое могло произойти - админы вроде сам php и все что с ним связано не трогали. Интересно, они могли обновляя что-то в ОС сбросить права всяким php.exe и другим файлам?

READ ALSO
Fatal error: Cannot use isset() on the result of an expression

Fatal error: Cannot use isset() on the result of an expression

Fatal error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead) in D:\openserver\OSPanel\domains\dgcom\vip_files\vip1

188
регулярка 0-9 и один +

регулярка 0-9 и один +

Каким образом указать, что знак + может быть только один и только в начале строки?

175