2012-02-13 13 views
48

Próbuję utworzyć i zapisać plik w katalogu głównym mojej witryny, ale nie wiem, gdzie jest on tworzony, ponieważ nie widzę żadnych ... Potrzebuję złożyć być nadpisywane za każdym razem, czy też możliwePHP Utwórz i zapisz plik txt do katalogu głównego

Oto kod:

$content = "some text here"; 
$fp = fopen("myText.txt","wb"); 
fwrite($fp,$content); 
fclose($fp); 

Jak mogę ustawić go zapisać w katalogu głównym?

+0

To wygląda dokładnie dla mnie. Tak długo, jak skrypt znajduje się w katalogu głównym, powinno być OK. Jedyną rzeczą, która by to powstrzymała, są twoje uprawnienia. – seanbreeden

+1

Jeśli masz uprawnienia, wypróbuj '$ fp = fopen ("/myText.txt "," wb ");' –

+0

Oprócz bycia złym pomysłem i pozornie hackery, upewnij się, że podałeś pełną ścieżkę i masz wystarczające uprawnienia. – Mikhail

Odpowiedz

90

Tworzy plik w tym samym katalogu co twój skrypt. Spróbuj tego.

$content = "some text here"; 
$fp = fopen($_SERVER['DOCUMENT_ROOT'] . "/myText.txt","wb"); 
fwrite($fp,$content); 
fclose($fp); 
+3

Po prostu notatka: To wymaga uprawnień do zapisu do katalogu, do którego piszesz. – mboy

+0

Nie mogę zapisać treści do tego pliku. Jak mogę to zrobić? – huykon225

0

fopen() otworzy zasób w tym samym katalogu, co plik wykonujący polecenie. Innymi słowy, jeśli właśnie uruchamiasz plik ~/test.php, twój skrypt utworzy ~/myText.txt.

Może to trochę zagmatwać, jeśli używasz przepisywania adresów URL (np. W środowisku MVC), ponieważ prawdopodobnie utworzy nowy plik w katalogu zawierającym główny plik index.php.

Ponadto należy ustawić poprawne uprawnienia i można przetestować przed zapisaniem do pliku. Poniższe czynności pomogłyby w debugowaniu:

$fp = fopen("myText.txt","wb"); 
if($fp == false){ 
    //do debugging or logging here 
}else{ 
    fwrite($fp,$content); 
    fclose($fp); 
} 
9

Jeśli używasz PHP w Apache można użyć zmiennej środowiskowej o nazwie DOCUMENT_ROOT. Oznacza to, że ścieżka jest dynamiczna i może być przenoszona między serwerami bez ingerencji w kod.

<?php 
    $fileLocation = getenv("DOCUMENT_ROOT") . "/myfile.txt"; 
    $file = fopen($fileLocation,"w"); 
    $content = "Your text here"; 
    fwrite($file,$content); 
    fclose($file); 
?> 
Powiązane problemy