Această întrebare specială a fost pusă de atâtea ori cu sugestii grozave, dar abandonul brusc de către Askers nu ajută cu adevărat, deoarece nu s-au obosit niciodată să se întoarcă să spună ce a funcționat (presupunând că trebuie să fi funcționat în cele din urmă)
Încerc să rulez un script python din PHP, dar nu am reușit. Mediu: PHP 7.3, Python 3.8, CentOS 7, Apache 2.4, Bluehost VPS.
Am încercat pe amândouă exec
și shell_exec
apachectl -S
dezvăluie că serverul Apache rulează ca nobody:nobody
Adăugat nimeni in sudoer folosind nimeni ALL=(ALL) NOPASSWD: /etc/bin/python3
S-au adăugat permisiuni Execute la scriptul Python și s-a schimbat proprietarul
la nimeni (la fel ca apache) ls -l testing.py
dă -rwxr-xr-x 1 nimeni nimeni
Scriptul Python singur rulează bine din shell.
Iată codul meu:
<?php
error_reporting(E_ALL);
$command = 'python3 /home/uploads/testing.py';
$command = escapeshellcmd($command);
$shelloutput = exec($command,$output, $ret_code);
echo "<h1>";
echo $shelloutput;
echo $output;
echo $ret_code;
echo "</h1>";
?>
Scriptul python:
#!/usr/bin/env python3
import sys
print("Bună ziua")
sys.exit(8)
Când rulez fișierul PHP din browser, nu primesc absolut nimic.
Aș aprecia orice ajutor pentru a rezolva acest lucru.