[+] php - uruchom skrypt a nastepnie index.html

Potrzebujesz pomocy z C, C++, perl, python, itp.
sethiel
Junior Member
Posty: 762
Rejestracja: 28 stycznia 2008, 11:50
Lokalizacja: Wrocław

[+] php - uruchom skrypt a nastepnie index.html

Post autor: sethiel »

Chciałbym napisać prostego php, który uruchomi skrypt a następnie index.html
zacząłem ale nie działa:

Kod: Zaznacz cały

<?php
exec('/skrypty/skrypt.bash');
$nazwa_pliku = "/var/www/katalog/index.html";
$uchwyt = fopen($nazwa_pliku, "rb");
$tresc = fread($uchwyt, filesize($nazwa_pliku));
fclose($uchwyt);
?>
Plik skrypt.bash tworzy za każdym uruchomieniem index.html i nadpisuje wszystkie pliki i foldery w katalogu /var/www/katalog/ oprócz index.php.
winnetou

Post autor: winnetou »

Dziękuje...
genobis
Beginner
Posty: 353
Rejestracja: 21 lipca 2008, 21:59
Lokalizacja: Trzebinia

Post autor: genobis »

No to problemem jest skrypt bash, którego nie pokazałeś, a nie php...

Tak na marginesie, polecam funkcję

Kod: Zaznacz cały

file_get_contents
sethiel
Junior Member
Posty: 762
Rejestracja: 28 stycznia 2008, 11:50
Lokalizacja: Wrocław

Post autor: sethiel »

Plik skrypt.bash:

Kod: Zaznacz cały

cat /var/log/demon/demon.log | cut -d ":" -f 4-1000 > /var/log/demon/1.log
cat /var/log/demon/1.log | cut -d " " -f 2-1000 > /var/log/demon/2.log
/opt/programy/tworz_strone_www
No tak, tylko pewnie nie powiedziałem jak chcę tego php odpalać, mianowicie:

Kod: Zaznacz cały

http://domena/index.php
Czyli maja się przekopiować odpowiednio logi, a następnie program tworz_strone_www utworzyć strukturę katalogów i plików używając miedzy innymi plików logów, to wszystko tworzy się w katalogu z plikiem index.php - z index.html włącznie. Po czym index.php ma uruchomić index.html

Edycja:
Nie odpala się skrypt bash.
Nawet gdy skróciłem skrypt bash do jednej linii (pierwszej) czyli:

Kod: Zaznacz cały

cat /var/log/demon/demon.log | cut -d ":" -f 4-1000 > /var/log/demon/1.log
Edycja2:
Jakby ktoś pytał:

Kod: Zaznacz cały

safe_mode = Off
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post autor: lessmian2 »

A czy właściciel procesu serwera WWW (prawdopodobnie www-data jeśli to standardowa instalacja Apache na Debianie) ma prawa do wykonywania tego skryptu, ew odpowiednie prawa do plików na których operuje?
sethiel
Junior Member
Posty: 762
Rejestracja: 28 stycznia 2008, 11:50
Lokalizacja: Wrocław

Post autor: sethiel »

Plik skrypt.bash ma prawa 755 ale za to nie miał praw do plików logów.
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post autor: lessmian2 »

Zaloguj się przez su na użytkownika www-data i spróbuj odpalić ten skrypt.
sethiel
Junior Member
Posty: 762
Rejestracja: 28 stycznia 2008, 11:50
Lokalizacja: Wrocław

Post autor: sethiel »

Kod: Zaznacz cały

SARG: setrlimit error - Operation not permitted

SARG: mkdir /virtual/web/squid-reports/2009Jul10-2009Jul10 Permission denied
SARG: process aborted.
Dziękuję.

Edycja:
Jedna dziwna sprawa, z poziomu ,,su www-data'' pierwsze dwie linie skryptu działają, a ze strony:

Kod: Zaznacz cały

http://domena/katalog/skrypt.bash 
już nie.

Edycja2:
Wszystko z powodu mojej raptowności. Pomotałem nazwy katalogów to nie dziwne i nie czary że nie działało.
poprawny kod:

Kod: Zaznacz cały

<?php
exec('/opt/skrypty/strona_www.bash');
header("Location: /go/strona_www/index.html");
?>

Jeszcze raz dziękuję za pomoc.

ps (off topic). fnmirk - ja się na prawdę staram pisać posty tak abyś nie musiał ich za każdym razem edytować, ślipię w nie 100 razy by wreszcie wejść na wyżyny Twojej perfekcji a i tak coś zawsze znajdziesz.
WilK
Posty: 26
Rejestracja: 12 lipca 2009, 15:40
Lokalizacja: Warszawa

Post autor: WilK »

A nie lepiej zamiast Header użyc include albo require? Da Ci to taki efekt jak chciałeś na początku z odczytem pliku, a nie przejściem do pliku.
ODPOWIEDZ