Üdv!
Napok óta olvasgatok a fórumon, találtam hasonló témákat, de a megoldást nem leltem meg. Php programból kellene egy linux parancsot futtatni. exec(); utasítás a megoldás. Ami a gond, hogy a lefutás közben engedély megtagadva jelenik meg. Egy szolgáltatást szeretnék elindítani php alól. pl: etc/init.d/pure-ftpd-mysql start . A webkiszolgálónál sikerült úgy megoldani, hogy "service apache2 start". Ezt engedi. Viszont a játékszerver, netrádió, stb dolgait + 200sor lenne bepakolni az init.d szolgáltatás listájába. És feleslegesnek is tartom, amikor van rá egy egyszerű parancs, csak nem fut le.
ötleteket várok!
köszi
wolfi
- 1719 megtekintés
Hozzászólások
- apache user micsoda? van neki joga futtatni?
- safe_mode be van kapcsolva?
- safe_mode_exec_dir micsoda?
etc.
- A hozzászóláshoz be kell jelentkezni
IMHO játékszervert, netrádiót ne apache-ból futtass PHP-val, hanem pakold bele rendesen az init-be.
"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."
- A hozzászóláshoz be kell jelentkezni
phaul:
apacs júzer www-data. Előferdülhet természetesen hogy nincs joga fingani sem. Viszont ezt nem az apache futtatja. Ez egy cron által meghívott PHP pearl. /usr/bin/php5 - és a fájl.php . Ha így is az apache futtatja, akkor az érdekes. (CRONBAN ROOT user van beállítva)
Safe mode OFF
dwokfur:
értem értem, dehm nem pakolhatok bele mindent, itt több száz különböző alkalmazásról lesz szó. Ez egy webadmin backend lesz ha elkészül. Az amiről jelen esetben szó van egy háttérben futó cronnal időzített script, amely elvégzi a Taskokat.
- A hozzászóláshoz be kell jelentkezni
ha root futattja es shellbol meghivva mukodik, akkor a legjobb otletem az strace. jah es probald ki hogy rootkent nem cronbol lefut e, lehet hogy a problema a cronnal van nem a php-nel.
- A hozzászóláshoz be kell jelentkezni
engedély megtagadva
1) ellenorizd, hogy a scripten (amit meghivsz!) van-e x jog, es a folotte levo directorykon is.
2) ellenorizd, hogy a meghivni kivant scriptben van-e az elejen
#!/bin/sh
mielott meg sokaig keresel php jellegu hibat.
- A hozzászóláshoz be kell jelentkezni
phaul:
- strace. Sosem használtam még, de a gugli szerint ez egy olyan alkalmazás, amellyel processként futtathatok php progikat?
egeresz:
- világos. az a kérdés, hogy ha egy valami.SH utasításba szeretném pakolni a php meghívását akkor az hogyan történik? a jogok 777 a tulajdonos root
turdus:
- jó ötlet, viszont attól félek, hogy ha 2 lépcsősre csinálom meg az egészet, akkor azt nem fogom tudni jól összehangolni. Jelenleg a Cronnal időzített php program kéri le SQL-ből az elvégezendő Taskokat, és azonnal le is futtatja. Ha ezt még beírom ide oda amoda, és egy kövi program futtatja le, akkor csak felesleges bonyolítás kerül be. (szerintem). de egy ötletnek kíváló.
- A hozzászóláshoz be kell jelentkezni
Ha kicsit is értelmesen van beállítva az apache, akkor nem fogja engedni, hogy a php cgi hozzáférjen az etc-hez (és így az init.d-hez). Ez így rendben is van. Ami a megoldás, egy kis script, ami cronból fut, megfelelő jogosultsággal, és egy tmp fileból kiolvassa, melyik scriptet kell újraindítani, majd törli a tmp filet. A php scriptnek meg csak a tmp file írásához van joga, továbbra sem éri el (helyesen) az etc-t.
Esetleg adhatsz sudo-val jogot a futtatáshoz, és a php exec-be "sudo /etc/init.d/..." raksz.
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni