Na wielu serwerach PHP działa w trybie safe-mode więc nie można używać funkcji system. Ma to swoje wady np. gdy chcesz zrobić backup serwisu i potrzebujesz do tego odpalić zewnętrzny program zip. Jeśli masz dostęp do crona, to możesz w pewnym sensie obejść to ograniczenie.

Data dodania: 2007-07-09

Wyświetleń: 7759

Przedrukowań: 0

Głosy dodatnie: 3

Głosy ujemne: 0

WIEDZA

3 Ocena

Licencja: Creative Commons

W poradzie Jak zrobić backup serwisu opisałem prosty skrypt pozwalający na zrobienie kopii zapasowej plików na serwerze (spakowanie plików). Mam na pewnym serwerze skrypt napisany w PHP, który pakuje wszystkie pliki txt (w których mam zapisane adresy mailowe osób zapisanych do pewnej subskrycji) i wysyła mi je na email. Niestety ten skrypt nie chodzi na wszystkich serwerach, bo niektóre serwery mają PHP w trybie safe-mode czyli skrypty pisane w PHP nie mogą uruchamiać zewnętrznych programów (w moim wypadku był to gzip). I tutaj jest problem, ale ja go obeszłem w dość śmieszny, ale ciekawy sposób :-) Ponieważ skrypt uruchamiał się raz dziennie, to postanowiłem utworzyć taki oto plik backup.sh (pliki sh pod linuxem to odpowiedniki dosowych plików BAT):

#!/bin/bash
rm ~/public_html/backup/w_arch.tar.gz
mysqldump --all -u nazwa_uzytkownika -phaslo nazwa_bazy >~/public_html/backup/baza_danych.txt
tar -cf ~/public_html/backup/w_arch.tar ~/public_html/backup/*.txt
gzip ~/public_html/backup/w_arch.tar
rm ~/public_html/backup/*.txt

GET http://www.adres mojej strony/backup/backup.php

Ten prosty skrypt zrzuca baze danych do pliku TXT, pakuje plik TXT do pliku w_arch.tar.gz, usuwa pliki TXT i odpala skrypt w PHP, który wysyła maila z załącznikiem (komenda GET). Jest to bardzo ciekawe rozwiązanie. Pozostaje jednak drobny problem: jak odpalić taki skrypt (nie mam dostępu do shella). Odpowiedź jest prosta: dodać wpis do crona!!! Należy wcześniej plikowi backup.sh nadać atrybuty 777

Oto jaki wpis ja dodałem do crona:
/home/jelcyn/public_html/backup/backup.sh >>/dev/null

Dzięki temu raz dziennie o 2 w nocy otrzymuje na maila spakowany zrzut baz danych z serwera na którym PHP działa w trybie SAFE MODE!!!
Licencja: Creative Commons