Myślisz, że zarabiasz tyle, na ile zasługujesz? Zapraszamy do wzięcia udziału w anonimowej ankiecie.
0

Uczę się PHP korzystając z http://pl.wikibooks.org/wiki/PHP/Studium_przypadku/Księga_gości. Jednakże pojawił się problem z dostępnym tam kursem.
Przepisałem kod dostępny w kursie i uruchomiłem na serwerze z PHP 5.3.1-5. Utworzyłem plik wpisy.txt, w którym powinny zapisywać się komentarze, jednakże nic tam się nie pojawia. Gdzie jest błąd?

define('WPISY', './wpisy.txt');

function dodajWpis($tytul, $autor, $www, $tresc)
{
    $tytul = trim($tytul);
    $autor = trim($autor);
    $www = trim($www);
    $tresc = trim($tresc);

    if(strlen($tytul) < 3)
    {
        return false;
    }
    if(strlen($autor) <3)
    {
        return false;
    }
    if(strlen($www) < 10)
    {
        if(strpos($www, 'http://') !== 0)
        {
            $www = 'http://'.$www;
        }
    }
    if(strlen($tresc) < 10)
    {
        return false;
    }

    $f = fopen(WPISY, 'a');

    $dane = array(0 =>
        base64_encode(htmlspecialchars($tytul)),
        base64_encode(htmlspecialchars($autor)),
        time(),
        base64_encode(htmlspecialchars($www)),
        base64_encode(nl2br(htmlspecialchars($tresc)))
    );

    fwrite($f, implode('|', $dane)."\r\n");
    fclose($f);
    return true;
}

flag
Funkcja zwraca True, False czy jakiś błąd ? Powiedz jeszcze z jakimi parametrami wywołujesz funkcję. – Eagle Mar 7 at 20:37
Błąd polegał w złych uprawnieniach do pliku wpisy.txt -- głupi błąd :/ – szmergiell Mar 7 at 20:41

3 Answers

3

Pierwsza sprawa to sprawdź czy serwer www ma prawo zapisu do pliku. Dla linuxa zazwyczaj użytkownikiem na którym pracuje serwer jest "www-data". To oznacza że plik 'wpisy.txt' musi albo należeć do tego użytkownika:

chown www-data.www-data wpisy.txt

oraz

chmod 644 wpisy.txt

Lub "każdy" musi mieć prawo zapisu:

chmod 666 wpisy.txt

Sam skrypt jest źle napisany i może zdarzyć się tak, że zanim pierwszy piszący użytkownik "zamknie" plik, to drugi go "otworzy". W efekcie prędzej czy później zniknie część/całość wpisów.

link|flag
2

masz uprawnienia do modyfikowania plików?
Czemu w ogóle nie korzystasz z MySQL?

link|flag
Nie korzystam z MySQL, bo -- słowo klucz -- uczę się. A co do odpowiedzi, aż głupio się przyznać, ja miałem możliwość modyfikowania plików... ale Apache nie. Dlatego był z tym problem. Dzięki za podpowiedź. – szmergiell Mar 7 at 20:39
2

Zwiększ sobie poziom raportowania błędów. Wklej to na początku pliku PHP:

ini_set('error_reporting', E_ALL|E_STRICT);
ini_set('display_errors', 1);

Pozwoli Ci to zaoszczędzić czas na debugowaniu takich błędów ;)

link|flag

Your Answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.