PHP a práva ke spouštění

PHP a práva ke spouštění
« kdy: 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.
« Poslední změna: 15. 08. 2025, 20:52:06 od BigSandy »


Re:PHP a práva ke spouštění
« Odpověď #1 kdy: 16. 08. 2025, 07:06:40 »

Re:PHP a práva ke spouštění
« Odpověď #2 kdy: 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

Re:PHP a práva ke spouštění
« Odpověď #3 kdy: 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;
?>
« Poslední změna: 16. 08. 2025, 07:32:29 od DejmaCZ »

Re:PHP a práva ke spouštění
« Odpověď #4 kdy: 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


Re:PHP a práva ke spouštění
« Odpověď #5 kdy: 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/

martyd420

  • ***
  • 243
  • K U B U N T U
    • Zobrazit profil
    • E-mail
Re:PHP a práva ke spouštění
« Odpověď #6 kdy: 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

T_PAAMAYIM_NEKUDOTAYIM

tecka

  • ***
  • 171
    • Zobrazit profil
    • E-mail
Re:PHP a práva ke spouštění
« Odpověď #7 kdy: 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ď.

Re:PHP a práva ke spouštění
« Odpověď #8 kdy: 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?

Re:PHP a práva ke spouštění
« Odpověď #9 kdy: 18. 08. 2025, 09:46:09 »
- proc to delas v php?
- programoval jsi nekdy v necem?
Děkuji za možnost editace příspěvku.

Re:PHP a práva ke spouštění
« Odpověď #10 kdy: 18. 08. 2025, 09:51:01 »

Re:PHP a práva ke spouštění
« Odpověď #11 kdy: 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í ;-)

Re:PHP a práva ke spouštění
« Odpověď #12 kdy: 18. 08. 2025, 16:22:10 »
Proč jsi nepřešel na Golang nebo Rust?