Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: update pliku
Forum PHP.pl > Forum > PHP
musiek86
Mam skrypt (wypelnianie_config.ph) który wypełnia mi plik pewnymi danymi, poniżej kod
  1. <?php
  2. $plik = fopen('/jakas_tam_sciezka/config.php', 'a');
  3. $dodawanie = "<?php
  4. $config['database']['type'] = 'mysql';
  5. $config['database']['database'] = 'jakas_baza';
  6. $config['database']['table_prefix'] = 'prefix__$nazwa__';
  7. $config['database']['hostname'] = 'jakishost';
  8. $config['database']['username'] = 'jakisuser';
  9. $config['database']['password'] = 'jakieshaslo';
  10. $config['admin_dir'] = 'admin';
  11. $config['hide_admin_links'] = 0;
  12. $config['cache_store'] = 'db';
  13. $config['memcache']['host'] = 'jakishost';
  14. $config['memcache']['port'] = 11211;
  15. $config['super_admins'] = '1';
  16. $config['database']['encoding'] = 'utf8';
  17. $config['log_pruning'] = array(
  18. 'admin_logs' => 365,
  19. 'mod_logs' => 365,
  20. 'task_logs' => 30,
  21. 'mail_logs' => 180,
  22. 'user_mail_logs' => 180,
  23. 'promotion_logs' => 180
  24. );
  25. ?>";
  26. fwrite($plik, $dodawanie);
  27. fclose($plik);
  28. echo "utworzono plik config.php<br>";
  29. ?>

do pliku przekazywana jest zmienna $nazwa aczkolwiek $config nie ma być zmienna tylko ma być wpisane w dokładnie takiej postaci.
Po wykonaniu skryptu otrzymuje błąd:
  1. Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /jakas_sciezka/wypelnianie_config.php on line 4


WTF?

I jeszcze jedno pytanie troche odbiegające od tematu, ale skoro juz tu pisze to moze przy okazji ktos odpowie bo ja juz sie troche poplątałem.
Mam fr. kodu:
  1. $wynik = mysql_query($tworzenie_tabel);
  2. if (!$wynik_zapytania)
  3. {
  4. echo "<br />Nie moge utworzyc tabel w bazie!<br /><br />";
  5. }
  6. else
  7. {
  8. echo "<br />Tabele zostaly stworzone!<br /><br />";
  9. }

I pytanie czy czy echo treści są dobrze podpisane czy powinny być odwrotnie?
CuteOne
Spróbuj zamiast cudzysłowie użyć apostrofów

  1. $str =
  2. '<?php
  3. $config[\'aaa\'] = \'aaa\';
  4. ?>';


ad2.
Po co kombinujesz z tym echo.. ?
  1. $wynik = mysql_query($tworzenie_tabel) or die('Nie mogę utworzyc tabeli w bazie '.mysql_error());
musiek86
Zamieniłem i niby błędu nie pokazuje ale nie dodaje do pliku nic. Można jakies kod który by pokazywał błąd? Mam juz w skrypcie
  1. ini_set( 'display_errors', 'On' );
  2. error_reporting( E_ALL );
CuteOne
  1. $str =
  2. '<?php
  3. $config[\'aaa\'] = \'aaa\';
  4. ?>';
  5. file_put_contents('plik.php', $str);
musiek86
Obecnie mam tak:
  1. <?php
  2. $plik = fopen('/jakas_tam_sciezka/config.php', 'a');
  3. $dodawanie = '<?php
  4. $config['database']['type'] = 'mysql';
  5. $config['database']['database'] = 'jakas_baza';
  6. $config['database']['table_prefix'] = 'prefix__$nazwa__';
  7. $config['database']['hostname'] = 'jakishost';
  8. $config['database']['username'] = 'jakisuser';
  9. $config['database']['password'] = 'jakieshaslo';
  10. $config['admin_dir'] = 'admin';
  11. $config['hide_admin_links'] = 0;
  12. $config['cache_store'] = 'db';
  13. $config['memcache']['host'] = 'jakishost';
  14. $config['memcache']['port'] = 11211;
  15. $config['super_admins'] = '1';
  16. $config['database']['encoding'] = 'utf8';
  17. $config['log_pruning'] = array(
  18. 'admin_logs' => 365,
  19. 'mod_logs' => 365,
  20. 'task_logs' => 30,
  21. 'mail_logs' => 180,
  22. 'user_mail_logs' => 180,
  23. 'promotion_logs' => 180
  24. );
  25. ?>';
  26. fwrite($plik, $dodawanie);
  27. fclose($plik);
  28. echo "utworzono plik config.php<br>";
  29. ?>

Teraz wyswietla mi błąd:
  1. Parse error: syntax error, unexpected T_STRING in /opt/lampp/htdocs/e-fora/pliki/formularz/wypelnianie_config.php on line 5
erix
Rozbij sobie blok otwierający php tak, aby nie występowały <? obok siebie.
musiek86
A niby jak to zrobic kiedy w pliku wypełnianie_config.php musze miec to na poczatku i koncu a zawartosc jaka dodaje do config.php tez musi sie zaczynac i konczyc tym ;>
erix
Czytaj uważnie:

Cytat
Rozbij sobie blok otwierający php tak, aby nie występowały <? obok siebie.


W ten sposób, którego Ty używasz (sposób zapisu) otwierasz kolejny blok kodu, który parser interpretuje jako kod, a nie jako string. Poczytaj sobie o łączeniu ciągów i zastosuj do pogrubionej przeze mnie frazy.
musiek86
Oki poradziłem sobie. Problemem jak sie okazało było to iż uzyłm tu ' zamiast " w linijce zawierającej
  1. $plik = fopen('/jakas_tam_sciezka/config.php', 'a');
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.