Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]Zaspis wykonywanego pliku
b_chmura
post
Post #1





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

Ostrzeżenie: (0%)
-----


Witam

Bylibyście wstanie oświecić mnie jak zapisać wynik pliku na którym aktualnie działamy?

Tok działania:
W pliku plik.php wykonujemy szereg zadań. Jeśli plik nie zwróci nam żadnego błędu jego wynik zapisujemy do plik.html.

plik.php
Kod
<html>
<head>
<title>Tytul</title>
<body>
<div>cos tam</div>
<?php
function b_echo($in)
{
  echo '<b>'.$in.'</b>';
}

b_echo('Witaj swiecie!');
?>
</body>
</html>
<?php
function save($filename)
{
  //jak ma wyglądać ta funkcja by zapisać do pliku to co mamy wyżej?
}
save('plik.html');
?>


plik plik.html wyglądałby tak:
Kod
<html>
<head>
<title>Tytul</title>
<body>
<div>cos tam</div>

<b>Witaj swiecie!</b>

</body>
</html>


Ten post edytował b_chmura 15.12.2007, 14:24:11
Go to the top of the page
+Quote Post
Daimos
post
Post #2





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

Ostrzeżenie: (0%)
-----


jesli PHP5 to file_put_contents" title="Zobacz w manualu PHP" target="_manual
a zeby pobrac dane do zapisu to file_get_contents" title="Zobacz w manualu PHP" target="_manual i w sciezce podaj http://adrespliku
powinno dzialac

ale najlepiej by bylo zrobic wszystko tak, zeby zmiescic to w jedna zmienna i pozniej wyswietlac, wtedy zapis bez problemu
np.:
  1. <?php
  2. $wynik = '
  3. <html>
  4. <head>
  5. <title>Tytul</title>
  6. <body>
  7. <div>cos tam</div>';
  8.  
  9. function b_echo($in)
  10. {
  11. return '<b>'.$in.'</b>';
  12. }
  13.  
  14. $wynik .= b_echo('Witaj swiecie!');
  15.  
  16. $wynik .= '</body>
  17. </html>';
  18. file_put_contents... bla bla bla i 
  19. echo $wynik;
  20.  
  21. ?>


Ten post edytował my salsa 26.10.2007, 13:41:04
Go to the top of the page
+Quote Post
drPayton
post
Post #3





Grupa: Zarejestrowani
Postów: 890
Pomógł: 65
Dołączył: 13.11.2005
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


Albo tak:
  1. <?php ob_start(); ?>
  2. <html>
  3. <head>
  4. <title>Tytul</title>
  5. <body>
  6. <div>cos tam</div>
  7. <?php
  8. function b_echo($in)
  9. {
  10. echo '<b>'.$in.'</b>';
  11. }
  12.  
  13. b_echo('Witaj swiecie!');
  14. ?>
  15. </body>
  16. </html>
  17.  
  18. <?php
  19. $wynik = ob_get_flush();
  20.  
  21. function save($filename)
  22. {
  23. file_put_contents($filename, $GLOBALS['wynik']);
  24. }
  25. save('plik.html');
  26. ?>


Efekt plik.html
  1. <title>Tytul</title>
  2. <div>cos tam</div>
  3. <b>Witaj swiecie!</b></body>
  4. </html>

(IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)

Ten post edytował drPayton 26.10.2007, 15:42:19
Go to the top of the page
+Quote Post
b_chmura
post
Post #4





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

Ostrzeżenie: (0%)
-----


drPayton - Nie wiedzieć czemu ale jeśli w pliku wywołam przykładowo funkcje drzewa katalogów (podam niżej) file_put_contents wyświetla mi ostrzeżenie:
Cytat
Warning: file_put_contents(xxx) [function.file-put-contents]: failed to open stream: Permission denied in /xxx/xxx/xxx/xxx.xxx on line xxx


Funkcja:
  1. <?php
  2. function all_dir($katalog = './', $cat = '', $idR = '')
  3. {
  4. $dir = sort_scandir($katalog, 1);
  5. $cat .= $katalog;
  6. $cnt = $cntP = 1;
  7.  
  8. foreach($dir as $file)
  9. {
  10. if(is_dir($file))
  11. { 
  12. $id = $idR.$cnt;
  13. echo '<div class="file">- '.cut($file).' <a onClick="javascript: ShowHide('dir_'.$id.'''button_'.$id.'');" id="button_'.$id.'">+</a> <span id="filesize">'.$id.'</span> <span style="display: none;" id="dir_'.$id.'">'."\n";
  14. all_dir($file.'/', $cat, $id.'.');
  15. echo '</span></div>';
  16. $cnt++;
  17.  
  18. }
  19. else
  20. {
  21. echo '<div class="file">- <a href="'.pl($cat.$file).'" title="'.$file.'">'.cut($file).'</a> <span id="filesize">('.r_filesize($file).') '.$idR.$cntP.'</span></div>'."\n";
  22. $cntP++;
  23. }
  24. }
  25. chdir('../');
  26. }
  27. ?>
Go to the top of the page
+Quote Post
Daimos
post
Post #5





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

Ostrzeżenie: (0%)
-----


a prawa dobre nadales?
Go to the top of the page
+Quote Post
b_chmura
post
Post #6





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

Ostrzeżenie: (0%)
-----


W rzeczy samej, problem występuje przy wywołaniu w/w funkcji.
Go to the top of the page
+Quote Post
phpion
post
Post #7





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Wg mnie sprawa leży w odpowiednich uprawnieniach dla plików/katalogów. Pokaż jak masz ponadawane prawa.
Go to the top of the page
+Quote Post
b_chmura
post
Post #8





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

Ostrzeżenie: (0%)
-----


phpion.com - najczęściej tworzyłem nowy katalog 777

odwoływałem się
  1. <?php
  2. save('nazwa_katalogu/nazwa_pliku.html');
  3. ?>


próbowałem też stworzyć już plik nazwa_pliku.html z chmod 666 ale także nie skutkowało

Powtarzam że jeśli nie wywołam w/w funkcji plik się prawidłowo zapisuje
Go to the top of the page
+Quote Post
Cienki1980
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

Ostrzeżenie: (0%)
-----


Przenoszę na prośbę autora.
Go to the top of the page
+Quote Post
b_chmura
post
Post #10





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

Ostrzeżenie: (0%)
-----


dochodzę do wniosku że może to być spowodowane chdir() przetestuje i dam znać

EDIT:
Tak jak myślałem problem pojawia się przez chdir() - czemu wcześniej nie przyszło mi to do głowy...

Trzeba będzie się zastanowić jak przerobić funkcję nie korzystając z chdir - ma ktoś może jakieś pomysły?
Go to the top of the page
+Quote Post
drPayton
post
Post #11





Grupa: Zarejestrowani
Postów: 890
Pomógł: 65
Dołączył: 13.11.2005
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


A do czego ma służyć chdir w tym miejscu?
Go to the top of the page
+Quote Post
b_chmura
post
Post #12





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

Ostrzeżenie: (0%)
-----


w funkcji sort_scanddir chdir zmienia katalog na ten podany w $katalog

  1. <?php
  2. function sort_scandir($in, $chdir = 0)
  3. { 
  4. $sd = scandir($in);
  5.  
  6. if($chdir == 1){chdir($in);}
  7.  
  8. foreach($sd as $file)
  9. {
  10. if(is_dir($file))
  11. {
  12. $ARRfile['1'][] = $file;
  13.  
  14. }
  15. if(is_file($file))
  16. {
  17. $ARRfile['2'][] = $file;
  18. }
  19. }
  20. foreach($ARRfile as $file)
  21. {
  22. foreach($file as $file)
  23. {
  24. $out[] = $file;
  25. }
  26. }
  27. return $out;
  28. }
  29. ?>


EDIT
Temat uznaje za zamknięty

Ten post edytował b_chmura 28.10.2007, 18:06:04
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.12.2025 - 18:31