На сайте (на сервере) выполняется следующий 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/"
на сервере локально через командную строку (с правами админа или нет - без разницы), то всё работает замечательно.
В чём может быть дело?
варианта 2 - права на исполнение или вообще запрет функции скорее первое - особенно если через http запуск от веб-юзера. спросите у админов - как так получилось
обнаружилось следующее:
shell_exec
нормальное выполняет бесправные команды, типа schell_exec('echo TEST')
или exec
выполняет .bat с такой же командой, но вот вызов svn
напрочь отказывается делать и как будто зависает.
Подумалось, что это может быть связано с правами, т.е. нет у пользователя прав на такие операции.
В результате для php.exe
для группы Users назначил все права (были только на чтение и исполнение), и в результате ВСЁ ЗАРАБОТАЛО!!!
Осталось непонятным только как такое могло произойти - админы вроде сам php и все что с ним связано не трогали. Интересно, они могли обновляя что-то в ОС сбросить права всяким php.exe и другим файлам?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
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
Каким образом указать, что знак + может быть только один и только в начале строки?