sudoers — php shell_exec с командами sudo не работает

Я сделал файл test.php в (/opt/lampp/htdocs/xampp/test.php)
содержащий код

$data = shell_exec("sudo php -v");
var_dump($data);

но это дает мне результат НОЛЬ

Я использую PHP 5.6.11-1ubuntu3.1 (cli), поэтому я также добавил строку в файл / etc / sudoers

www-data ALL=NOPASSWD: /opt/lampp/htdocs/xampp/test.php

Я также попытался, добавив

www-data ALL=NOPASSWD: ALL

Но ничего не работает. Пожалуйста помоги

0

Решение

  • Отредактируйте файл sudoers (с помощью visudo) и добавьте правило, позволяющее пользователю веб-сервера запускать команду без пароля. Например:

    www-data ALL=NOPASSWD: /path/to/script
    

    Это позволит конкретному пользователю звонить sudo на этом конкретном сценарии без запроса пароля.

  • Попробуйте указать полный путь к бинарному файлу php. /usr/bin/php, Если вы не знаете, найдите его с помощью: which php

    $data = shell_exec("/usr/bin/php -v");
    var_dump($data);
    
  • Вы также можете проверить свой php.ini ограничить доступный набор команд?

    ; When safe_mode is on, only executables located in the safe_mode_exec_dir
    ; will be allowed to be executed via the exec family of functions.
    ; http://php.net/safe-mode-exec-dir
    safe_mode_exec_dir =
    
3

Другие решения

Вы должны изменить минимальный uid / gid для модуля mpm_itk:

$ cat /etc/apache2/modules.d/00_mpm_itk.conf
<IfDefine MPM_ITK>
LoadModule mpm_itk_module modules/mpm_itk.so
#  LimitUIDRange 1000 2000
#  LimitGIDRange 1000 2000
LimitUIDRange 0 2000
LimitGIDRange 0 2000
</IfDefine>
0

По вопросам рекламы [email protected]