2011-10-05 13 views
18

Uczę się pisania wtyczki WordPress. Potrzebuję pomocy w zapisaniu niektórych danych do pliku XML. Jestem na mojej lokalnej maszynie, Macu z MAMP. Mam PHP 5.2.13. W moim plugin, mam:Błąd PHP fopen(): niepowodzenie w otworzeniu strumienia: odmowa uprawnień

$file_handle = fopen('markers.xml', 'w'); 
$stringdata = "Test Info"; 
fwrite($file_handle, $stringdata); 
fclose($file_handle); 

Running powyższe daje mi następujący błąd:

Warning: fopen(markers.xml) [function.fopen]: failed to open stream: Permission denied in /Users/my_name/Sites/my_site/wp-content/plugins/my_plugin_folder/my_plugin_main_file.php on line 73

Warning: fwrite(): supplied argument is not a valid stream resource in /Users/my_name/Sites/my_site/wp-content/plugins/my_plugin_folder/my_plugin_main_file.php on line 75

Warning: fclose(): supplied argument is not a valid stream resource in /Users/my_name/Sites/my_site/wp-content/plugins/my_plugin_folder/my_plugin_main_file.php on line 76

Próbowałem za bezwzględną ścieżkę w linii $ file_handle: http://my_site/wp-content/plugins/my_plugin_folder/markers.xml. Ale to nie zadziałało.

Próbowałem też zmianę uprawnień markers.xml następująco:

(Me): Przeczytaj & Zapis (brak danych): tylko do odczytu Wszyscy: Odczyt & Write

Z jakiegoś powodu, mój Mac nie pozwolił mi zmienić (nieznane), aby przeczytać & Napisz. Nie jestem pewien, czy to coś zmieni. Kliknąłem plik prawym przyciskiem myszy i wybrałem opcję "Pobierz informacje", aby zmienić uprawnienia.

W phpinfo(), mam:

"Zarejestrowani PHP Strumienie HTTPS, FTPS, compress.zlib, compress.bzip2, php, plik danych, http, ftp"

Czy Ustawienie WordPress powodujące problem? czy to tylko kwestia PHP?

Wszelkie sugestie, jak rozwiązać ten problem?

Dziękuję.

+0

Możliwy duplikat [PHP - Failed to open stream: No such plik lub katalog] (http://stackoverflow.com/questions/36577020/php-failed-to-open-stream-no-such-file-or-directory) –

Odpowiedz

26

Może być konieczna zmiana uprawnień administratora. Otworzyć zacisk na komputerze Mac, a następnie otwórz katalog, który zlokalizowany jest w markers.xml typ A:.

sudo chmod 777 markers.xml 

może zostać wyświetlony monit o hasło. Mogą to być również katalogi, które nie pozwalają na pełny dostęp. Nie znam WordPressa, więc może być konieczna zmiana uprawnień każdego katalogu przenoszącego się do katalogu mysite.

+0

Witam @Chris, dziękuję za wiadomość. Ustawiłem markers.xml na 777, ale wciąż dostaję błąd. Jeśli zmienię katalogi przesuwające się do mysite, czy nie będzie problemu z bezpieczeństwem? Jakakolwiek rada? Dziękuję Ci. – Laxmidi

+0

Hi @Chris, zmieniłem chmod na 777 o jeden poziom wyżej. Użyłem również absolutepath na lokalnej maszynie zamiast na pełną ścieżkę hosta. Teraz działa! Dziękuję Ci. – Laxmidi

+0

Dziękuję! W dużej potrzebie: D – cwiggo

-3

[function.fopen]: failed to open stream

Jeśli masz dostęp do pliku php.ini, spróbuj włączyć fopen. Znajdź odpowiednią linię i ustawić ją jako "on": & jeśli w wp np localhost/wordpress/function.fopen w php.ini:

allow_url_fopen = off 
should bee this 
allow_url_fopen = On 

And add this line below it: 
allow_url_include = off 
should bee this 
allow_url_include = on 
+3

Ta odpowiedź jest kompletnym nonsensem. Zamiast rozwiązywać problem, wprowadzasz lukę bezpieczeństwa. Gdybyś przeczytał dokładnie to pytanie, zobaczyłbyś, że chce otworzyć plik LOCAL: fopen ('markers.xml', 'w'); Ale potrzebujesz allow_url_fopen = Tylko do otwierania plików REMOTE! Na przykład dla fopen ("http://example.com/....xml"); Proszę zobaczyć http://www.antary.de/2011/05/26/php-curl-als-alternative-fuer-allow_url_fopen – Elmue

Powiązane problemy