Autor Zpráva
ForestCZE
Profil
Zdravím, vytvořil jsem si shell script restartovat.sh:

#!/bin/bash
/etc/init.d/apache2 reload

Nastavil jsem práva:

chmod 755 ./restartovat.sh

Pokud v příkazovém řádku zadám:

bash ./restartovat.sh

tak se Apache v pohodě znovu načte.

Já bych ten příkaz potřeboval pustit v PHP, tak mám funkci:

exec("cd /var/www/cesta; bash ./restartovat.sh");

Problém je, že se to prostě nepošle a Apache se znovu nenačte.

Zkoušel jsem si to nechat vypsat:

echo exec("cd /var/www/cesta; bash ./restartovat.sh");

a vrátí se mi:

*

Dokázal by mi někdo poradit prosím? Už se s tím peru 7 hodin. Díky.
Rfilip
Profil
Nejpravděpodobnější příčina jsou oprávnění uživatelů - služby může restartovat jen root a php dědí práva apache - tedy vetšinou účet nobody/www-data..., který téměř žádný práva v systému nemá.
K tomu výpisu, exec vrací jen poslední řádek výstupu (celý vrací v nepoviném druhém parametru ), použij radši funkci system
ForestCZE
Profil
Rfilip:
Nejpravděpodobnější příčina jsou oprávnění uživatelů - služby může restartovat jen root a php dědí práva apache - tedy vetšinou účet nobody/www-data..., který téměř žádný práva v systému nemá.

Zkoušel jsem:

chown root ./restartovat.sh

ale to bohužel nepomohlo
Davex
Profil
ForestCZE:
Pro spuštění restartovacího skriptu použij sudo.

exec - su root

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: