Portál AbcLinuxu, 14. května 2025 04:09
$answer=exec("/usr/bin/touch /tmp/alfa", $list); print_r($list); print_r($answer); echo "OK";jeden by řekl, že na tom nic není. Jenže po spuštění stránky (výpis je jen OK) se v /tmp soubor "alfa" nevytvoří. Pokud provedu spuštění skriptu ručně (php zkouska.php) vse je v pořádku a soubor v /tmp se vytvoří. Zkoušel jsem se přihlásit jako www-data (su www-data) a skript spustit, opět vše v pořádku (alfa se vytvořil). Jedná se o debian 9.1, php7, apache2 - s defaultním nastavením. Práva do /tmp jsou 777 Děkuji za radu
Řešení dotazu:
[Fri Sep 01 10:54:41.097293 2017] [mpm_prefork:notice] [pid 4161] AH00169: caught SIGTERM, shutting down
[Fri Sep 01 10:54:41.234504 2017] [mpm_prefork:notice] [pid 4911] AH00163: Apache/2.4.25 (Debian) configured -- resuming normal operations
[Fri Sep 01 10:54:41.234619 2017] [core:notice] [pid 4911] AH00094: Command line: '/usr/sbin/apache2'
access.log:
::1 - - [01/Sep/2017:10:55:58 +0200] "GET /www/xxx.php HTTP/1.1" 200 317 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0"
$answer=exec("sudo -u my_user -S /usr/bin/var_viewer -c i1", $list);
v /etc/sudoers pak mám záznam:
www-data ALL=(ALL) NOPASSWD: /usr/bin/var_viewer
Na ostatních (starších) systémech to běží - vypíše se obsah sdílené paměti. Na tomto problémovém PC se sdílená pamět nenajde (takto se to chovalo pokud jsem nebyl přepnuty na uživatele, kteý pamět vytvořil (sudo -u)).
Nechápu proč to nyní nejde.... Nějaké napady?
sudo -u pou -S /usr/bin/var_viewer -c i1
vrátí bez problému vše tak jak očekávám.
exec("sudo -u my_user -S /usr/bin/var_viewer -c i1 1>/niekde_kde_vie_apache_zapisovat/vystup.log 2>/niekde_kde_vie_apache_zapisovat/chyba.log");
su www-data
cd /var/www/html/
php xxx.php
Přez Apache pokud zadám stránku xxx.php - nefunkční ( program v exec se spustí vrátí chybu, že sdílená pamět není inicializovana, což není pravda to dokazuje i ruční spuštění pod uživatelem www-data).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.