Fórum Root.cz

Hlavní témata => Server => Téma založeno: BigSandy 15. 08. 2025, 20:46:30

Název: PHP a práva ke spouštění
Přispěvatel: BigSandy 15. 08. 2025, 20:46:30
Kluci, už si nevim rady.
Mam na raspi LGserver pro přepinani kanalu.
Toto přes terminal funguje
/home/leo/lgtv-remote/venv/bin/lgtv -n OLED55B9PLA on    # Zapnout televizi:
/home/leo/lgtv-remote/venv/bin/lgtv -n OLED55B9PLA off    # Vypnout televizi do pohotovostního režimu
/home/leo/lgtv-remote/venv/bin/lgtv -n OLED55B9PLA screenOn  # Zapnout pouze obrazovku:
/home/leo/lgtv-remote/venv/bin/lgtv -n OLED55B9PLA screenOff  # Vypnout pouze obrazovku (zvuk běží dál):
/home/leo/lgtv-remote/venv/bin/lgtv -n OLED55B9PLA volumeUp        #  Zvýšit hlasitost:
/home/leo/lgtv-remote/venv/bin/lgtv -n OLED55B9PLA volumeDown    #  Snížit hlasitost:

Se snažim nějaký ten přikaz spustit přes PHP.
Kód: [Vybrat]
<?php
system
('/home/leo/lgtv-remote/venv/bin/lgtv -n OLED55B9PLA off');
?>

Soubor TV_server.php ma
skupina leo
vlastnik www-data [33]
a prava 0777
ve visudo mam
www-data ALL=(ALL) NOPASSWD: ALL

Děkuji za jakoukoliv radu, ktera pomuže k vyřešení problemu.
Název: Re:PHP a práva ke spouštění
Přispěvatel: DejmaCZ 16. 08. 2025, 07:06:40
jakoukoliv radu...
https://claude.ai/share/eb7d688f-b8b8-4a26-9702-39d5b3a2e46a
Název: Re:PHP a práva ke spouštění
Přispěvatel: BigSandy 16. 08. 2025, 07:23:50
Ani jedno nepomohlo a 5. Diagnostika problému   Přidejte do PHP pro debugging:

Citace
Current user: www-data Current directory: /var/www Python path: /usr/bin/python Environment: USER=www-data HOME=/var/www PWD=/var/www Command output: sh: 1: /home/leo/lgtv-remote/venv/bin/lgtv: Permission denied
Název: Re:PHP a práva ke spouštění
Přispěvatel: DejmaCZ 16. 08. 2025, 07:28:41
sudo
https://claude.ai/share/eb7d688f-b8b8-4a26-9702-39d5b3a2e46a

ps: řešil jsi to s nějakou ai?
je rychlejší než odpovědi na foru ;)

edit: nejde přesdílet
Kód: [Vybrat]
<?php
$command 
'sudo /home/leo/lgtv-remote/venv/bin/lgtv -n OLED55B9PLA off';
$output shell_exec($command ' 2>&1');
echo 
$output;
?>
Název: Re:PHP a práva ke spouštění
Přispěvatel: BigSandy 16. 08. 2025, 07:50:20
 sudo -u www-data /home/leo/lgtv-remote/venv/bin/lgtv -n OLED55B9PLA off
sudo: unable to execute /home/leo/lgtv-remote/venv/bin/lgtv: Permission denied
Název: Re:PHP a práva ke spouštění
Přispěvatel: BigSandy 16. 08. 2025, 08:43:13
Jsem zkusil vytvřit bash skript přes ktery vypnu televizi.
Ani ten skript nejde přes php spustit.
www-data nema přistup do složky /home/leo/
Název: Re:PHP a práva ke spouštění
Přispěvatel: martyd420 16. 08. 2025, 10:23:41
Jsem zkusil vytvřit bash skript přes ktery vypnu televizi.
Ani ten skript nejde přes php spustit.
www-data nema přistup do složky /home/leo/
Tím oznamuješ, že jsi to vyřešil, nebo se ptáš, jak tam ten přístup nastavit? :)

Co upravit skupinu?
sudo chgrp -R www-data /home/leo/lgtv-remote
sudo chmod -R g+rx /home/leo/lgtv-remote
sudo usermod -aG leo www-data

Název: Re:PHP a práva ke spouštění
Přispěvatel: tecka 16. 08. 2025, 18:42:27
Podle toho venv bych řekl, že to je v Pythonu, a ten venv musíš nejdřív aktivovat, aby to fungovalo. Takže všechny potřebné příkazy "zabal" do jednoho skriptu.

V tom pokusu se sudo logicky nebude -u www-data, ale -u leo. A ještě bys to musel povolit v /etc/sudoers. Třeba takhle:
Kód: [Vybrat]
www-data ALL=(leo) NOPASSWD: /nejaky/program *Ale to jen pokud bys to opravdu potřeboval.

Takže si ve svém home můžeš vyhradit adresář s právy nastavenými tak, aby se tam www-data dostal. Nebo, pro tebe jednodušší varianta, prostě to dej do web rootu, kam už se www-data dostane teď.
Název: Re:PHP a práva ke spouštění
Přispěvatel: BigSandy 18. 08. 2025, 08:49:35
Už to mam tak na pul vyřešene.
Cele jsem to smazal a znovu nainstaloval do /usr/local/bin
Jedime co přes php funguje je.
system('/usr/local/bin/lgtv-control/venv/bin/lgtv -n OLED55B9PLA on');

V prohliřeši se   mi zobrazi
{"type": "response", "id": "0", "payload": {"returnValue": true}} {"closing": {"code": 1000, "reason": ""}}
Jde tento vystup přesměrovat do nějake proměnne?
Název: Re:PHP a práva ke spouštění
Přispěvatel: to_je_jedno 18. 08. 2025, 09:46:09
- proc to delas v php?
- programoval jsi nekdy v necem?
Název: Re:PHP a práva ke spouštění
Přispěvatel: BigSandy 18. 08. 2025, 09:51:01
Protože to potřebuji spouštět přes tasker a jeho uzel HTTP Request.
https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm&hl=cs
https://tasker.joaoapps.com/userguide/en/help/ah_http_request.html
Název: Re:PHP a práva ke spouštění
Přispěvatel: cznarg 18. 08. 2025, 10:45:59
Protože to potřebuji spouštět přes tasker a jeho uzel HTTP Request.
https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm&hl=cs
https://tasker.joaoapps.com/userguide/en/help/ah_http_request.html

To neznamená že to musí být PHP... WebServer má (skoro) každý jazyk. Jinak jde, stačí se podívat do dokumentace k PHP. system vrací poslední řádek ale explicitně se říká "call also tries to automatically flush the web server's output buffer after each line of output if PHP is running as a server module. " ... pokud potřebujete víc dat a jiné chování, použijte třeba exec. PHP má dokumentaci na https://www.php.net/manual , v pravo nahoře máte input na hledání ;-)
Název: Re:PHP a práva ke spouštění
Přispěvatel: Tomáš Crhonek 18. 08. 2025, 16:22:10
Proč jsi nepřešel na Golang nebo Rust?