Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: exec - tarowanie
Forum PHP.pl > Forum > PHP
SeaDog
Witam, na początku powiem, że czytałem już tematy odnośnie polecenia exec, które są już na tym forum. Stosowałem się do wskazówek innych użytkowników,
ale niestety jak na złość to polecenie a konkretniej: exec("tar... nie chce mi działać.

Tak pokrótce:
W domu mam postawiony serwer apache + PHP + MySQL (config standardowy),
dodatkowo uruchomiony mod_rewrite.

uruchamiając skrypt:
  1. <?php
  2. exec('whoami');
  3. ?>

dostaję informację kim jestem

natomiast ten skrypt:
  1. <?php
  2. $file = "/www/plik.jpg";
  3. exec('tar -cf archiwum.tar', $file);
  4. ?>

już mi nie działa. Dodam, że nie ma żadnego błędu.

config apache-a standardowy. Dla użytkownika www-data atrybuty ustawione są na rwx.
Próbowałem plik tar wrzucić do głównego katalogu www i z tego katalogu uruchomić program. Efekt ten sam, czyli nic. Dalej brak archiwum.

W czym tkwi problem?
Crozin
W tym, że nie popatrzyłeś do czego służy drugi argument funkcji exec: http://pl2.php.net/manual/en/function.exec.php
SeaDog
użycie samego, pierwszego argumentu też nic nie daje.

  1. <?php
  2. exec('tar -cf archiwum.tar');
  3. ?>

tak też próbowałem i nic.
krzotr
Powyższa komenda nie ma prawa działać

  1. <?php
  2. $file = "/www/plik.jpg";
  3. exec('tar -cf archiwum.tar ' . $file); // konkatenacja
SeaDog
wiem, wiem, ręce mi opadały więc już i to napisałem.
Tak naprawdę prosta sprawa a stwarza tyle kłopotu.

używałem takich poleceń:

  1. <?php
  2. exec("tar -cf archiwum.tar");
  3. ?>

żeby utworzyć same archiwum a później z pętli wrzucać do niego pliki.

robiłem też tak:

  1. <php
  2. exec("tar -cf archiwum.tar plik.jpg");
  3. ?>


próbowałem z pojedynczymi cudzysłowami, ale to nie ma znaczenia dry.gif

tak, jak napisałem wyżej, wrzuciłem też plik tar do katalogu głównego i z tej lokalizacji odpaliłem polecenie.

To samo.

Myślę, że po stronie serwera coś może być, tylko config jest standardowy.

przed chwilką wykonałem to polecenie:

  1. <?php
  2. exec('tar -xf plik.tar');
  3. ?>


pliki zostały wypakowane.



Problem rozwiązany.

  1. <?php
  2. exec('tar -rf archiwum.tar');
  3. ?>


nie można po prostu tworzyć pustego archiwum t.j.
  1. <?php
  2. exec('tar -cf archiwum.tar');
  3. ?>

chciałem zrobić tak, że tworzę plik archiwum.tar i do tego archiwum wrzucam pliki.
całąścią miała sterować pętla.

Najpierw trzeba dodać do archiwum jakiś plik, a później do tego archiwum wrzucać kolejne,
tylko dlaczego w takim razie działa -rf?
  1. <?php
  2. exec('tar -rf archiwum.tar');
  3. ?>

puste archiwum jest tworzone mimo tego, że to argument -c odpowiada za utworzenie archiwum
a -r wrzuca pliki do istniejącego.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.