[RPI][nginx][php-fpm] Uruchamianie skryptu bash za pomocą php

Mam Raspberry Pi z zainstalowanym ngnix oraz php. Chcę uruchamiać skrypt w bash za pomocą php. Serwer nginix działa, działa też serwer php. Listing skryptu php poniżej.

<?php
echo "Start...";
$script="sudo /home/pi/Desktop/my-scripts.sh";
$message1 = shell_exec($script);
echo $message1;
?>

Skrypt po uruchomieniu wyświetla wyłącznie pierwszą instrukcję z echo, niemniej nie wykonuje skryptu.

Będę wdzięczny za wskazówki :slight_smile:

Dzięki.

Dokładnie nie pamiętam. Na pewno uruchamianie skryptów nie jest domyślnie włączone. Po pierwsze zobacz czy module w któym jest shell_exec jest w ogóle włączony w php oraz czy w php.ini nie jest zablokowane wywoływanie skryptów.

1 polubienie

A użytkownik php (nie pamiętam jaki jest, ale coś z -www w nazwie) jest w grupie sudoerów?
Sprawdź jako kto uruchamiany jest skrypt - odpal przez shell_exec komendę whoami

Nie zauważyłem sudo, to jeszcze bardziej komplikuje sprawę. Musisz skonfigurować sudo tak by skrypt php nie musiał podawać hasła i w ogóle sudo działało dla usera bez hasła.
Dodatkowo musisz dodać dla usera php powłokę bo domyślna to /bin/sh niepozwalająca zalogować się do terminala i wykonywanie komend.

Oczywiście należy pamiętać, że to co próbujesz zrobić (w taki sposób jak próbujesz zrobić) jest skrajnie niebezpieczne i takie R-Pi nie powinno być wystawione do publicznej sieci. Dopóki jest to nauka lub lokalne wykorzystanie i R-Pi nie ma dostępu do sieci można iść na takie skróty. Ogólnie powinieneś takie rzeczy zaprojektować tak by były bezpieczne, bo w tym przypadku to jest skrajnie niebezpieczne.